반응형
이번 글에서는 파쿠르 용사를 만들면서 경험했던 문제점에 대한 해결 방법에 대해 다뤄보도록 하겠습니다.
▶ 문제점
파쿠르 용사에서 보스들의 기본 패턴에 점프가 있습니다. 보스가 플레이어 캐릭터보다 크기 때문에 보스와 용사가 충돌했을 때 보스가 밀리는 건 자연스럽지 않습니다. 보스와 용사가 모두 땅에 있을 때는 보스의 Rigidbody 컴포넌트에 있는 mass 값을 더 크게 설정하면 보스가 밀리지 않게 할 수 있습니다. 하지만, 보스가 떠 있는 경우에는 이 mass 값에 상관없이 뒤로 밀려 버리는 문제가 발생합니다.
이러한 물체가 발생하는 이유는 용사와 보스 모두 가속도를 갖고 떠 있는 상태에서 충돌하기 때문에 물리엔진에 의해서 보스도 뒤로 밀려 버리는 현상이 발생하게 됩니다. 하지만 mass 값이 훨씬 큰 boss 가 저렇게 맥없이 밀려 버리는 현상은 유니티 물리엔진의 특성인 것인지 버그인 것인지는 알 수 없습니다.
▶ 해결 방법
이러한 문제는 다음과 같이 스크립트를 작성해 어느정도 해결할 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class BossMonster : Monster
{
var rig = GetComponent<Rigidbody>();
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.layer == LayerMask.NameToLayer("Player"))
{
// 보스 캐릭터를 고정시키기
rig.constraints = RigidbodyConstraints.FreezeAll;
}
}
private void OnCollisionExit(Collision collision)
{
if (collision.gameObject.layer == LayerMask.NameToLayer("Player"))
{
// X 와 Y 축만 constraints 를 풀어줍니다.
rig.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionZ;
}
}
}
이렇게 하면 완벽하진 않지만 최소한 보스가 힘 없이 밀리는 현상은 방지할 수 있습니다.
반응형
'게임 만들기 > 파쿠르 용사' 카테고리의 다른 글
물리엔진을 이용한 캐릭터와 플랫폼 이동 문제 해결 (0) | 2023.04.21 |
---|---|
파쿠르 용사 출시 (0) | 2023.04.19 |
댓글