본문 바로가기
Unity 유니티 기초강의

유니티 게임 로직 타겟주변을 회전 스킬구현하기

by 만사오케이프로 2022. 4. 19.
반응형

뱀파이어 서바이벌 게임

 

 

뱀파이어 서바이벌 게임을 재미있게 하다보면 어떻게 구현하였을지 궁금하게 됩니다.

우주에서 태양의 주위를 도는 행성들처럼 그 주위를 계속 도는 효과는 여러방법으로 구현할수 있습니다.

 

 

가장 쉬운방법은 캐릭터 하위에 넣어서 물체를 돌려주면 됩니다. 하지만 하위에 넣어서 돌려주면 3D게임같은 경우 캐릭터가 360도 돌수 있어 게임들은 하위까지 같이 돌기에 또다른 작업을 해주어야 합니다.

 

 

 

 가장 무난한 방법은 캐릭터를 따라다니면서 중점에서 각도를 돌면서 일정 반지름만큼 이동 시켜주는 로직을 많이 사용합니다.

 

public class TargetCursor : MonoBehaviour
{

   public Transform target;

   public float yPosition;
   // 반지름.
   public float radius = 1.0f;
   // 회전 속도.
   public float angularVelocity = 480.0f;
   // 위치.
   public float angle = 0.0f;
   
   void Update () {
      // 회전 각도.
      angle += angularVelocity * Time.deltaTime;
      // 오프셋 위치.
      Vector3 offset = Quaternion.Euler( 0.0f, angle, 0.0f ) * new Vector3( 0.0f, 0.0f, radius );
      // 이펙트 위치.
      transform.position =  new Vector3(target.transform.position.x, yPosition, target.transform.position.z) + offset;
   }
}

radius = 캐릭터(타겟) 에서 회전시켜줄 반지름 거리입니다.

angularVelocity = 회전 속도 입니다. 숫자를 높일수록 빠르게 캐릭터 주위를 돕니다. 0이하시 입력시 반대 방향으로 돕니다.

 

 

3D, 2D 어떤게임이든지 사용할수 있게 높이값을 조절할수 있는 yPosition 이 있습니다. 

스킬 및 연출 등 다양하게 사용되는 로직입니다.

반응형

댓글