유니티 벽 충돌시 팅기기 스크립트
작성자 정보
- 마스터 작성
- 작성일
컨텐츠 정보
- 315 조회
- 목록
본문
준비물
-움직일 오브젝트 (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
등록된 댓글이 없습니다.