์ด์์ ์ผ์ชฝ์ผ๋ก๋ง ์๊ณ ์ค๋ฅธ ํธ์ผ๋ก ํ๋ ์ด์ด๊ฐ ๋์ด๊ฐ๋ ์ผ์ชฝ์ผ๋ก๋ง์๋ฉด์ ๋ฐ๋ผ์ต๋๋ค.
์ด๋ป๊ฒ ์์ ํด์ผํ ๊น์
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Away_Enemy : MonoBehaviour
{
ย
ย public float distance;
ย public LayerMask isLayer;
ย public float speed;
ย ย Rigidbody2D rb;
ย ย Transform target;
ย ย public GameObject bullet;
ย ย
ย ย [Header("์ถ๊ฒฉ ์๋")]
ย ย [SerializeField] [Range(1f, 4f)] float moveSpeed = 3f;
ย ย [Header("๊ทผ์ ๊ฑฐ๋ฆฌ")]
ย ย [SerializeField] [Range(0f, 3f)] float contactDistance = 1f;
ย ย bool follow = false;
ย ย public float atkDistance;
ย ย public Transform pos;
ย ย void Start()
ย ย { ย
ย ย ย ย rb = GetComponent<Rigidbody2D>();
ย ย ย ย target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
ย ย ย ย ย StartCoroutine(Bullet());
ย ย }
void Update()
ย ย {
ย ย ย ย FollowTarget();
ย ย ย
ย ย }
ย ย void FollowTarget()
ย ย {
ย ย ย ย if (Vector2.Distance(transform.position, target.position) > contactDistance && follow)
ย ย ย ย ย ย transform.position = Vector2.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime);
ย ย ย ย else
ย ย ย ย ย ย rb.velocity = Vector2.zero;
ย ย }
ย ย private void OnTriggerEnter2D(Collider2D collision)
ย ย {
ย ย ย ย follow = true;
ย ย }
ย ย private void OnTriggerExit2D(Collider2D collision)
ย ย {
ย ย ย ย follow = false;
ย ย }
ย ย
IEnumerator Bullet(){
ย ย ย ย Instantiate(bullet, transform.position, transform.rotation);
ย ย ย ย yield return new WaitForSeconds(3.0f);
ย ย ย ย StartCoroutine(Bullet());
}
}
Instantiate(bullet, transform.position, transform.rotation); ๊ฒ์ด์ผ ๋ง์ง๋ง์ธ์ rotation ๊ฐ์ ์ด๊ฒ์ ๊ฒ ๊ณฑํด๋ด๋ผ์ด๊ธฐ ์ ๋๋ก ์ดํด ๋ชปํ๊ณ ์ฌ์ฉํ๋๊ฑฐ ๊ฐ๋ ธ
์๋๋ enemy ๋ฐฉํฅ์ผ๋ก bullet instantiate ํ๋๊ฑฐ์๊ฒ ๋๋ฐ enemy ๋ฐฉํฅ ์ ํ ์ํ๊ณ position ๊ฐ๋ง ๋ณ๊ฒฝํด์ start ๊ฐ์ผ๋ก๋ง ์ด์์ ๋ฐ์ฌํ๊ฒ์ง ๋ฐฉํฅ ์ ํ ํ์ธํ ์ ์๋ object๋ก๋ค๊ฐ ๋ฐ๊พธ๊ณ sphere ์ ํฐ์ฝ๋ผ๋ ๋ฌ์๋๋ผ ใ ใ
๋ต๋ณ ์ดํด๊ฐ ์๋๋๋ฐ ๋ญ๋ผ๋๊ฑฐ์?
์ฌ๊ธฐ์ ์ด๋ฐ ๊ธฐ์ด์ ์ธ ์ง๋ฌธ์ ๊ณ์ํด ํ๋ ๋์ ๊ทธ๋ฅ ์ธ๊ฐ์ ๋ฐฐ์ฐ๋ฌ๊ฐ์