본문 바로가기
Unity/기초

Move, Rotation, Quaternion

by 롤다 2024. 2. 8.

01. Move

  • FixedUpdate() 에서 시작
  • [Edit] - [Project Settings] - [Time] 창 / 화면 끊김 방지
    Fixed Time Step = 0.02 기본 설정
  • Target Frame Rate = 60이면 (1 / 60) = 0.016667
  • transform 으로 움직이면 캔버스가 전체가 업데이트되어서 최적화에 좋지 않음
rb.AddForce(speed * targetDir);
// 일정한 속도
rb2D.velocity = Vector2.right * speed;
rb2D.position += speed * 방향;

 

// 플레이어에게 빠르게 다가가다가 느리게 멈추기
Vector2 offset = playerTr.position - transform.position;
float sqrLen = offset.sqrMagnitude;
if (sqrLen > 2)
{
    if (timer > 1.5f)
    {
        rd.position = playerTr.position;
    }
    else
    {
        timer += 0.1f;
        rd.position = Vector2.Lerp(playerTr.position, transform.position, 0.5f);
    }
}
else
{
    // 완료
}

02. Rotation, Quaternion

// 타겟 바라보기
float angle = Mathf.Atan2(targetDir.y, targetDir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0, angle);
// 타겟 바라보기
transform.LookAt(target)
// 기본값 (0, 0, 0)
transform.rotation = Quaternion.identity;
// 각도 계산
float angle = Vector2.SignedAngle(Vector2.right, targetDir) + angle_;
// 회전값 계산
Quaternion rotation = Quaternion.Euler(0, 0, angle);
// 방향 벡터 계산
targetDir = rotation * Vector2.right;
// 회전값 설정
transform.rotation = rotation;
// 플레이어 주위 돌기
transform.RotateAround(playerTr.position, Vector3.back, 0.4f);

'Unity > 기초' 카테고리의 다른 글

List, Dictionary  (0) 2024.02.08
클릭, 터치 상태에 따른 이벤트  (0) 2024.02.08
Physics Joints in Unity 2D(물리관절)  (0) 2024.02.08
Raycast, Physics, Rigidbody  (0) 2024.02.08
Event Function Sequence 실행 순서 이벤트 함수  (1) 2024.02.08