유니티

유니티 벽 충돌시 팅기기 스크립트

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

준비물

-움직일 오브젝트 (Collider2D, Rigidbody2D, script)

-팅길 벽 (BoxCollider2D), 태그 Wall로 바꾸기 (Wall을 추가해야 됨)


스크립트

Vector2 vec2;

float speed;

 

void Start()

{

    vec2 = new Vector2(Random.Range(-1f, 1f), 1).normalized;

}

 

 void Update()

 {

     transform.Translate(vec2 * speed * Time.deltaTime);

 }

 

void OnCollisionEnter2D(Collision2D collision)

{

    //벽에 부딧치면

    if (collision.gameObject.CompareTag("Wall"))

    {

        //진행 방향 바꾸기

        vec2 = Vector2.Reflect(itemVec2, collision.contacts[0].normal);

    }

}


 

코드 해설

1.OnCollisionEnter2D를 사용하여 벽에 충돌 할 경우 현재의 vector2의 값을 반전 시킴

OnCollisionEnter2D()에서 사용한 collision.contacs[0]은 두 물체 사이의 여러 충돌지점중에서 첫번째 충돌지점의 정보를 가져옴

Vector2.Reflect를 사용하여 값을 반전 시킴

 

2.Update에서 계속 연산해주기 떄문에 충돌시 진행 방향만 바꾸면 반사각으로 팅기게 됨

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.
알림 0