새소식

제작/Souls

[게임 제작] 유니티 몬스터 기괴한 움직임 2

  • -
1에 이어 사지가 극단적으로 꺾이는 모션을 추가하였으나, 뭔가 부족해서 떨림을 주어 역동적으로 만들고자 하였다.

 

 

현재 문제

1. 몸이 꺾인 채로 추격을 하니 정적인 모습만 보여 공포감이 줄어드는 느낌이 들었다.

현재 모습


개선 사항

1. 몸과 가까운 부분만 매 프레임 회전값을 조금 주어 역동적인 움직임을 보여준다.

 

확실히 이렇게 쫓아온다면 더욱 무서울 것 같다는 느낌이 들었다.

 


구현
//각 파트들이 감전된 듯 튕기는 효과
public void TrembleBody(float rot)
{
    if (parts.Length == 0 || CantTremble) return;

    Vector3 rotate = Vector3.zero;
    rotate.x = Random.Range(0.0f, 1.0f);
    rotate.y = Random.Range(0.0f, 1.0f - rotate.x);
    rotate.z = 1.0f - rotate.x - rotate.y;
    rotate *= rot * (Random.Range(0,2) ==0? -1 :1);

    //허리 같은 경우
    parts[0].part.localRotation = Quaternion.Euler(defaultRotates[0] + changeRotates[0] + rotate);
}

 

설명

- rotate 에는 각 회전값을 랜덤한 방향으로 주기 위한 것으로 매개변수를 통해 지정된 회전값으로 지정하여 떨리는 효과를 준다.

-rot로 떨림을 줄 각도를 지정할 수 있다.

- defaultRotates[n]은 게임 시작 시 몬스터의 기본적인 Rotation값을 가지고 있다.

-changeRotates[n]은 몬스터의 꺾임에 대한  다음 Rotation값을 가지고 있다.

최종

- 허리를  Y축으로 180도 회전시켜 허리가 분리되는 듯한 느낌을 주었고, 상체를 뒤로 젖혀 기괴함을 더했다.

- 변경된 Rotation을 기반으로 떨림을 준다.

- 중간에 바뀌는 큰 움직임은 초기에 게임시작 시 실행되는 Start함수를 통해 각 지정된 몸 부분에 대한 초기 값을 저장하고, 해당 값을 기반으로 변경시킨다.

 

Contents

아핫

땡큐하다