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 |