public class hitManager : MonoBehaviour
{
// 태어날 때 imageHit이 보이지 않게 하고 싶다.
// 적이 플레이어를 공격하면 그 때 imageHit 이 나오도록!
//그러기 위해서 속성으로 imageHit가 있도록 해야겠쥬?
public GameObject imageHit;
void Start()
{
//태어날 때 imageHit이 안 보이게 하려면 start에서 안보이게 해줘야겠쥬?
imageHit.SetActive(false); //this.imageHit~ 인데 this생략
}
// 1. 적이 플레이어를 공격하면(적이 나를 호출함)
// 2. imageHit이 나옴(기능)
public void Hit()
{
//깜빡거리고 싶다
//1. imageHit를 보이게 한다
//2. 0.1초 후에
//3. imageHit를 안 보이게 하고 싶다
//if(hitted)
//{
// imageHit.SetActive(True);
// Time.deltaTime + 0.01;
// imageHit.SetActive(false);
//}
//코루틴 필요
}
}
이제 다시 코루틴 형식에 맞춰서 imagehitManager 스크립트를 수정해주면
public void Hit()
{
//깜빡거리고 싶다.
StartCoroutine("leHit");
}
IEnumerator leHit() //빨간줄 뜨는 이유는 yield없어서
{
//1. imageHit를 보이게 하자
imageHit.SetActive(true);
//2. 0.1초 후에
yield return new WaitForSeconds(0.1f);
//3. imageHit를 안 보이게 하고 싶다
imageHit.SetActive(false);
}
private void Update()
{
if(Input.GetButtonDown("Jump"))
{
Hit();
}
}
이렇게 한 뒤 enemy에서 불러줘야 에너미가 때렸을 때 이게 호출이 될거임
그 문법은
//공격성공
// 플레이어를 공격하고
//target.AddDamage();
//hitManager의 hit함수를 호출하고 싶다.
hitManager hm = GameObject.Find("hitManager");
hm.Hit();
gun에서도 마찬가지지만 다른 함수의 컴포넌트를 호출하는 경우에는 다 위와 같이 쓴다
근데 find를 쓰는건? 안 좋음 그.래.서! 여기서 다시 싱글턴 패턴이 나옴
메모리 구조