Unity

Unity) 반복되는 화살 트랩

떵뚠 2023. 9. 18. 09:36
반응형

오브젝트를 계속 생성하는 "화살 트랩 오브젝트"를 만들고 생성되는 오브젝트인 "화살"은 X축 방향으로 이동한 다음 과녁판에 닿으면 Destroy하게 설계했다.

늘 그렇듯,, 처음 설계할 때는 어떻게 할 지 감이 오지 않았지만 다 만들고 시간이 지나고 나면 굉장히 쉬운 작업인 걸 체감할 수 있었다.

그러니까 너도 할 수 있어 쫄지마

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReArrowTrap : MonoBehaviour
{
    float currTime;
    public GameObject Arrow;

    void Update()
    {
        currTime += Time.deltaTime;
        if (currTime > 2)
        {
            GameObject arrow = Instantiate(Arrow);
            currTime = 0;
        }
    }
}

ReArrowTrap 코드는 정말 간단하게 설정한 오브젝트를 2초마다 생성만 하게 끔 만들었다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReArrow : MonoBehaviour
{
    float ArrowSpeed = 10.0f;
    float ArrowDamage = 1.0f;

    void Update()
    {
        transform.Translate(ArrowSpeed * Time.deltaTime, 0, 0);

    }
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.name.Equals("Rock"))
        {
            Destroy(this.gameObject);
        }

        if (other.gameObject.tag.Equals("Player"))
        {
            GameObject playerObj = GameObject.Find("Player");
            Playermove player = playerObj.GetComponent<Playermove>();
            player.hp -= ArrowDamage;
        }
    }
}

ReArrow 코드는 본인이 생성되는 동시에 자기 기준 X축으로 정해진 속도로 날아가다가

"Rock"(과녁판 이름이 Rock임)을 만나면 사라지고

"Player"를 만난다면 데미지를 주는 방식으로 만들었다.

다른 트랩들과 다르게 이 트랩은 Trigger로 했는데 Trigger로 해야 캐릭터의 방해를 받지 않고 과녁판에 정확히 날아가기 때문이닿

ReArrowTrap의 Arrow 영역에 ReArrow를 드래그해서 가져다 놓으면 !!

화살이 2초마다 생성된다 !

ReArrow말고 다른 오브젝트를 넣으면 다른 오브젝트가 계속 나온다.

반응형