유니티에서 충돌 제어를 해보았다.

우선적으로 

 

 

콜라이더를 통해 오브젝트의 충돌 이 가능한 지점을 설정을 해주어야 한다.

에딧 콜라이더를 통해 설정을 하루 있고 Radius를 통해 반지름으로 설정도 가능하다.

 

다음은 Rigidbody

mass를 통해 무게 를 설정해줄수 있고 

Use Gravity 를 통해 중력을 설정 해줄수 있다.

IS Kinematic 을 체크하면 물리적인 간섭을 받지 않게 된다

사용예) 게임에서의 장애물 왔다 갔다하며 쭈욱 밀어 내게끔 하는 용도 

Rigidbody를 사용하여 중력에 따른 움직임도 구현이 가능하다

void FixedUpdate(){

if (Input.GetButtonDown("Jump"))
        {
            rigid.AddForce(Vector3.up * 10, ForceMode.Impulse);
            Debug.Log(rigid.velocity);
        }
        
}

이런식으로 점프<<Input  Management의

점프가 눌렸을때 

AddForce(방향*힘값,힘의종류) 를통해쓸수있고 

힘의종류 ForceMode 의 경우 4가지의 종류가 있으며 

Acceleration , Force,I mpulse, VelocityChange

각각은

 

Accceleration : 연속+질량무시O

질량에 관계없이 가속된다 

Force : 연속+ 질량무시X

현실적인 물리현상을 줄떄 사용된다.

Impulse :불연속 +질량무시X

짧은 순가의 힘 충돌이나 폭발에 많이쓰임

VelocityChange : 불연속 +질량무시O

질량에 관계없이 속도를 바꾼다 예를들어 

큰배 작은배를 같은 힘을줘서 같은 속도로 이동할수 없는데 이걸 이용해서 가능하게 한다 .

 

다음은 충돌이다 

 

충돌의 경우 

오브젝트와 오브젝트가 부딫히는것을 말하며 

3개의 이벤트를 통해 활용을 한다 

OnCollisionEnter : 충돌이 일어나면!

OnCollisionStay : 충돌이 계속되면 !

OnCollisionExit :충돌이 끝나면 !

그리고 


    private void OnCollisionEnter(Collision collision) // 충돌 했을때
    {
        if(collision.gameObject.name == "MyBall")
        mat.color = new Color(1,180,1);


    }

난 이렇게 사용을 해주었고 

충돌을 하여서 이벤트가 발생 했을때

충돌한 오브젝트가 MyBall일 경우에 색이 변하게 값을 주었다 

충돌의 경우 바닥이 있는경우에도 충돌로 취급이 되기 때문에 무엇이랑 충돌을 하였는지를 설정하는것이 중요하다 

나머지의 경우에도 사용법은 같다 .

 

다음 은 트리거 이벤트이다 

트리거 이벤트의 경우 

콜라이더와 콜라이더가 부딪히는것을 뜻하고 

해당하는 콜라이더 탭에서 Is Trigger 탭을 선택할경우 다른 오브젝트와 상호작용 을 일으키지 않고 그저 충돌여부만 

파악할수 있게된다 

트리거 이벤트 또한 

Enter

Stay

Exit 3가지의 이벤트로 구성이 되고 

private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.name == "SafeZone")
        {
            rigid.AddForce(Vector3.up * 2, ForceMode.Impulse);
        }
    }

이렇게 사용을 해보았다.

해당 코드의 경우엔 

SafeZone 오브젝트와 콜라이더 끼리의 충돌이 진행중일경우 

부웅 뜨게끔 하여 보았다

메이플 스토리 라라 용맥 스킬과 비슷한 효과를 얻을 수 있었다.

 

'Unity공부' 카테고리의 다른 글

2D RPG 애니메이션 문제 해결하기  (0) 2023.04.23
Unity 2D 기초  (0) 2023.04.19
유니티 오브젝트 조작하기 vector3  (0) 2023.04.17
deltaTime  (0) 2023.04.17
UGUI #1  (1) 2023.04.16