TIL
유니티 충돌
박민혁_kog
2023. 9. 6. 20:38
이 두 컴포넌트는 Unity에서 물리 시뮬레이션과 충돌 감지를 처리하는데 필수적입니다.
- Collider:
- Collider 컴포넌트는 게임 오브젝트에 물리적 형태를 부여합니다. 이는 충돌 감지를 가능하게 하며, 여러가지 종류의 Collider가 있습니다.
- 예를 들어 BoxCollider는 사각형, SphereCollider는 원형, MeshCollider는 복잡한 메시 형태의 Collider를 제공합니다. Collider는 자체적으로 물리적인 움직임을 제어할 수는 없지만 충돌을 감지할 수 있습니다.
- Rigidbody:
- Rigidbody 컴포넌트는 게임 오브젝트에 물리 법칙을 적용합니다. Rigidbody가 있는 오브젝트는 중력에 영향을 받고, 힘과 토크를 통해 움직일 수 있습니다.
- 또한 Rigidbody가 부착된 오브젝트는 다른 Rigidbody나 Collider와 충돌할 수 있습니다.
충돌 발생 시
- Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트를 발생시킵니다.
- 이 이벤트는 스크립트에서 처리하여 원하는 기능을 실행할 수 있습니다.
- 예를 들어, 오브젝트가 땅에 닿으면 점프 가능 상태로 변경하거나, 오브젝트가 플레이어와 충돌하면 데미지를 입히는 등의 기능을 구현할 수 있습니다.
충돌만으로 더 많이 적을줄 알았는데 나중에 추가해서 더적음
시리얼 라이저
프라이빗도 유니티에서 보이게할수 있음
aim 맞추기 (마우스 따라가기)
public class NewBehaviourScript : MonoBehaviour
{
[SerializeField] private SpriteRenderer armRenderer;
[SerializeField] private Transform armPivot;
[SerializeField] private SpriteRenderer characterrenderer;
private Topdown _controller;
private void Awake()
{
_controller = GetComponent<Topdown>();
}
// Start is called before the first frame update
void Start()
{
//마우스 움직일때 에 언에임을 구독
_controller.OnLookEvent += OnAim;
}
public void OnAim(Vector2 newAimDirection)
{
RotateArm(newAimDirection);
}
private void RotateArm(Vector2 Direction)
{
float rotZ=MathF.Atan2(Direction.y, Direction.x) * Mathf.Rad2Deg; //벡터 각도
armRenderer.flipY =MathF.Abs(rotZ)>90f;
characterrenderer.flipX=armRenderer.flipY;
armPivot.rotation = Quaternion.Euler(0,0,rotZ);
}
}