목차

반응형

래그돌을 날리는 것까지는 됐는데 2D 환경에서는 한쪽 축 없이 잘 이동하겠지만 3D 환경에서는 한쪽 축으로만 이동시키려면 다른 방법이 필요하다.

일단 rigidbody의 freeze position을 사용하면 어색하기 때문에 다음과 같은 방법을 사용함을 밝힌다.

이번 내용 역시 짧아서 목차없이 진행한다.

 

엄청 커서 캐릭터가 넘어가지 못하도록 벽의 역할을 할 큐브 2개를 소환한다.

위와 같이 양옆을 막아줘야한다.

 

벽의 Mesh Renderer를 삭제해서 안 보이도록 해준다.

 

public class testGoat : MonoBehaviour
{
    public Rigidbody body;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            Vector3 diffVector = new Vector3(1, 1, 0);
            body.AddForce(diffVector * 1500);
        }
    }
    
    public GameObject Wall1;
    public GameObject Wall2;

    private void FixedUpdate()
    {
        Vector3 tempPos = body.transform.position;
        
        tempPos.z = Wall1.transform.position.z;
        Wall1.transform.position = tempPos;
        
        tempPos.z = Wall2.transform.position.z;
        Wall2.transform.position = tempPos;
    }
}

기존의 캐릭터 스크립트에 위와 같이 FixedUpdate와 Wall1, Wall2 변수를 작성한다.

 

익스펙터에서 넣어준다.

 

그러면 캐릭터가 어떻게 움직여도 한쪽 방향으로만 움직이게 된다.

 

 

 

유니티 ragdoll 발사하기 글 모음

1. 목차

2. 래그돌 만들기

3. 래그돌 발사하기

4. 래그돌이 날아갈 때 한쪽 축으로만 이동되게 하기

5. 현재 래그돌이 멈췄는지 안멈췄는지 판단하기

6. 래그돌 멈추기

7. 래그돌 고장 방지

반응형