유니티 3D 쿼터뷰 액션게임 만들기
👾 Player 물리문제 고치기 👾
1. 자동회전 방지
✏️ 오브젝트에 밀려나서 Player 스스로 회전하는 것
외부 충돌에 의해 Rigidbody 의 회전 속력이 발생
FixedUpdate() 함수와 함께 새로운 함수도 선언하여 호출
📌 AngularVelocity : 물리 회전 속도
FixedUpdate()에서 꾸준히 회전 속도를 0으로 만들기 때문에 스스로 도는 행동은 일어나지 않음
2. 충돌 레이어 설정
✏️ Player가 인터렉션이 없는 오브젝트랑 충돌하지 않도록 설정
🔻 충돌 설정할 Layer들을 추가
📌 Layer Collision Masks
레이어들의 상호간 충돌 설정
-BulletCase는 Floor, BulletCase와만 충돌
-PlayerBullet은 Player만 충돌 제외
체크해제된 Layer끼리는 충돌하지 않음 (이벤트 포함)
3. 벽 관통 방지
✏️ Player가 벽을 관통하지 못하도록 설정
📌 DrawRay()
Scene내에서 Ray를 보여주는 함수 (시작위치 , 쏘는 방향 * ray길이 , 색 )
🔻 벽 충돌 플래그 bool 변수를 생성
bool Bordering
📌 Raycast()
Ray를 쏘아 닿는 오브젝트를 감지하는 함수
Wall 레이어마스크를 가진 물체의 충돌을 감지하면 Bordering이 true로 바뀜
-플래그변수를 이동제한조건으로 활용하기
-회전은 회전대로, 이동은 이동대로 막음
🔻 벽 오브젝트 마찬가지로 고유 레이어를 만들어 적용
4. 아이템 충돌 제거
✏️ 물리 충돌을 담당하는 Collider와 충돌하여 문제가 발생한다
- OnCollisionEnter()함수에서 변수를 호출하여 물리효과 변경
- GetComponent()함수는 첫번째 컴포넌트를 가져옴
📣 즉, 물리를 담당하는 Collider가 Inspector창의 가장 위에 있어야함
- MoveUp으로 물리효과를 담당하는 Collider를 위로 올리기
'유니티' 카테고리의 다른 글
유니티 3D 쿼터뷰 액션게임 - 수류탄 구현하기 / 투척, 던지기 / 폭발 (0) | 2022.04.24 |
---|---|
유니티 3D 쿼터뷰 액션게임 - 피격 테스터 만들기 (0) | 2022.04.24 |
유니티 3D 쿼터뷰 액션게임 - 원거리 공격 구현 / Instantiate() / Raycast / 마우스 방향으로 회전 (0) | 2022.04.23 |
유니티 3D 쿼터뷰 액션 게임 - 근접공격 구현하기 / Trail Renderer / 코루틴 (0) | 2022.04.22 |
유니티 3D 쿼터뷰 액션 게임 - 아이템 먹기 / 공전 물체 만들기 / RotateRound() (0) | 2022.04.21 |