게임에서 오브젝트가 충돌했을때의 처리를 하는 것은 게임의 기본 완성으로 가기위한 첫번째 단추이다.
즉, 적군의 총알에 맞거나 장애물에 부딪히는등의 처리를 이와 같이 할 수 있기때문이다.
결과 화면을 먼저 보자.
자동차는 양쪽 블럭벽에 충돌하는 순간 방향을 바꾸어서 계속 움직인다.
위 처리를 위해서는
화면에 두개의 블럭 및 자동차를 배치한다.
그리고 블럭 컴포넌트에는 Box Collider 2D 를 차량에는 Box Collider 2D 와 물리엔진인 Rigidbody2D 를 적용한다.
이후, 자동차 컴포넌트의 움직임 제어를 위해서 코드를 하기 처럼 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveOnRightLeft : MonoBehaviour
{
public float speed = 1;
Rigidbody2D rbody;
// Start is called before the first frame update
void Start()
{
rbody = GetComponent<Rigidbody2D>();
// 소스상에서 중력 무시 및 Z축 회전 방지를 한다
rbody.gravityScale = 0;
rbody.constraints = RigidbodyConstraints2D.FreezeRotation;
}
// Update is called once per frame
void FixedUpdate()
{
// 물리엔진의 속도로 X축으로 이동
rbody.velocity = new Vector2(speed, 0);
}
private void OnCollisionEnter2D(Collision2D collision)
{
// 충돌시 방향을 바꾼다.
speed = -speed;
this.GetComponent<SpriteRenderer>().flipX = (speed < 0);
}
}
|
cs |
상기 코드에서 중요한 점은 바로 충돌시 호출되는 콜백함수
OnCollisionEnter2D() 이다. 개발자는 이곳에서 충돌이 후 처리될 코드를 작성해주어야 한다.
자신의 게임에 맞게...
감사합니다 ^^
반응형
'앱 만들기 > 유니티2D 게임 만드는 방법' 카테고리의 다른 글
유니티-충돌시 오브젝트 사라지게 하기 (2) | 2021.06.17 |
---|---|
유니티-충돌 처리 하기(2) 게임 중지시키기 (1) | 2021.06.16 |
유니티-유도탄 구현해보기. (2) | 2021.06.13 |
유니티-키보드로 오브젝트 움직이기(2) (2) | 2021.06.06 |
유니티-비주얼스튜디오 연동하기 IntelliCode 사용하기 (2) | 2021.06.01 |
댓글