반응형
게임에서 충돌시 객체를 사라지게 하는 요소는 여러가지가 있을것이다.
총알에 맞아 적군이나 아군이 터지는 것도 그 중 하나이다.
오늘 예제에서는 유도탄이 날아와 아군에 맞으면 탄과 아군 유닛이 동시에 사라지게
하는 코드를 작성해 본다.
탄 과 기체 모두 Rigidbody 2D 와 BoxCollide 2D 를 적용하고,
기체의 C# 코드를 하기와 같이 작성한다.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Fighter : MonoBehaviour
{
bool direction = false;
float speedX = 0, speedY = 0;
Rigidbody2D rbody2D;
public string targetObjectName;
// 충돌했을때... private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.name == targetObjectName)
{
// 현재 기체를 사라지게
this.gameObject.SetActive(false);
// 미사일을 사라지게 GameObject missile = GameObject.Find(targetObjectName);
missile.SetActive(false);
}
}
private void Start()
{
// 기체의 항속 속도 느낌을 위해서 rbody2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
//키 값이 없을때는 움직이지 않도록.
speedX = 0; speedY = 0;
//오른쪽 설정
if (Input.GetKey("right"))
{
// direction = false;
speedX = 3;
}
//왼쪽 설정
if (Input.GetKey("left"))
{
// direction = true;
speedX = -3;
}
//위로 설정
if (Input.GetKey("up"))
{
speedY = 3;
}
//아래로 설정
if (Input.GetKey("down"))
{
speedY = -3;
}
}
// 일정한 간격에 실행. 움직임 구현
void FixedUpdate()
{
rbody2D.velocity = new Vector2(speedX, speedY);
}
}
|
cs |
|
|
OnCollisionEnter2D 에서 collision.gameObject.name 을 비교하는 부분과
gameObject.SetActive(false); 를 이용해서 오브젝트를 화면에서 사라지게 하는 부분이 주요한 포인트이다.
게임에서 오브젝트가 사라지거나, 나타나게 할 수 있기때문에
더욱 게임 같이 만들 수 있는 부품이 하나 더 생김을 알 수 있다.
감사합니다.
반응형
'앱 만들기 > 유니티2D 게임 만드는 방법' 카테고리의 다른 글
유니티 - 디버그 로그 출력하기 (4) | 2021.06.28 |
---|---|
유니티-화면 전환하기 (2) | 2021.06.19 |
유니티-충돌 처리 하기(2) 게임 중지시키기 (1) | 2021.06.16 |
유니티-충돌 처리 하기(1) 방향 전환 (1) | 2021.06.15 |
유니티-유도탄 구현해보기. (2) | 2021.06.13 |
댓글