앱 만들기/유니티2D

유니티-충돌시 오브젝트 사라지게 하기

나도 처음이야 2021. 6. 17.

게임에서 충돌시 객체를 사라지게 하는 요소는 여러가지가 있을것이다.

총알에 맞아 적군이나 아군이 터지는 것도 그 중 하나이다.

오늘 예제에서는 유도탄이 날아와 아군에 맞으면 탄과 아군 유닛이 동시에 사라지게 

하는 코드를 작성해 본다.

https://youtu.be/AuwDktoy4E8

 

탄 과 기체 모두 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); 를  이용해서 오브젝트를 화면에서 사라지게 하는 부분이 주요한 포인트이다.

 

게임에서 오브젝트가 사라지거나, 나타나게 할 수 있기때문에

더욱 게임 같이 만들 수 있는 부품이 하나 더 생김을 알 수 있다.

감사합니다.

반응형

댓글