오늘 이론
Rigidbody의 ForceMode
물리적인 동작에서 힘을 가할 때 사용한다.
- Force : 힘을 지속적으로 적용
- 이동하거나 일정시간동안 움직일 때 사용할수 있다.
- (코드)Rigidbody.AddForce(Vector3 Force, ForceMode.Force); - Acceleration : 가속도를 적용
- 대시동작을 사용할때 현재 속도에서 점점 빨라지는 효과이다.
- Rigidbody.AddForce(Vector3 Force, ForceMode.Acceleration); - Impulse : 순간적인 힘을 적용
- 점프 동작을 할때 사용할수 있다.
- Rigidbody.AddForce(Vector3 Force, ForceMode.Impulse); - VelocityChange : 변화속도에 적용 즉 물체의 현재 속도를 변경
- 이거는 방향이나 속도를 갑자기 바뀔때 사용
- Rigidbody.AddForce(Vector3 Force, ForceMode.VelocityChange);
Raycast
눈에 보이지 않는 가상 광선으로 물체 여부를 파악
종류에는 (Ray, RaycastHit, MaxDistance, LayerMask)
public LayerMask groundLayerMask;
...
bool IsGrounded()
{
Ray[] rays = new Ray[4]
{
new Ray(transform.position + ( transform.forward * .2f) + (transform.up * .01f), Vector3.down),
new Ray(transform.position + (-transform.forward * .2f) + (transform.up * .01f), Vector3.down),
new Ray(transform.position + ( transform.right * .2f) + (transform.up * .01f), Vector3.down),
new Ray(transform.position + (-transform.right * .2f) + (transform.up * .01f), Vector3.down),
};
for (int i = 0; i < rays.Length; i++)
if (Physics.Raycast(rays[i], .1f, groundLayerMask))
return true;
return false;
}
이런 코드로 플레이어가 땅에 닿으면 점프를 할수 있고 공중에 있을때 점프를 거부하는 코드인데
여기서 Rays가 현재위치에서 아래 위치랑 닿는 땅이 goundLayerMask라는 레이어와 닿았으면 작용을 한다.
플레이어 오브젝트 인스펙터에서 GroundLayerMask를 들어가면 Player체크를 빼고 레이어를 Player로 바꾸면 공중에 있어도 점프를 할수 없는 방법도 활용할 수 있다.
Skybox
유니티 3D 프로젝트를 사용할 때 스카이 박스로 배경을 그리는 경우가 있는데
스카이 박스에도 종류가 있다. (정육면체형, 반구형)
정육면체형은 6 Sided, Cubemap | 반구형은 Panoramic, Procedual이 있는데 각 무슨차이를 설명하자면
정육면체
Exposure : Skybox의 조기래 역할
Rotation : 스카이박스를 몇도부터 그리기 시작할건지
반구형
'개발 TIL' 카테고리의 다른 글
5/28 부트캠프 개발 TIL (물리 가속도와 마찰) (0) | 2024.05.28 |
---|---|
5/27 부트캠프 개발 TIL (2D Sprite) (0) | 2024.05.27 |
5/23 부트캠프 개발 TIL (Raycast) (0) | 2024.05.23 |
5/22 부트캠프 개발 TIL (코루틴과 콜라이더) (0) | 2024.05.22 |
5/21 부트캠프 개발 TIL (플레이어 피격) (0) | 2024.05.21 |