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말고 다른 오브젝트를 넣으면 다른 오브젝트가 계속 나온다.
반응형