Я уже некоторое время работаю над проектом Unity2d, и недавно я реализовал метод, с помощью которого мой «враг», размещенный в сценарии GreyGuardController
, будет запускать пулю, в направлении которой он будет смотреть, используя аниматор и
otherAnimator = otherObject.GetComponent<Animator>();
для этого.
Каждый раз, когда я сейчас запускаю свой код, моя игра зависает, но не падает (я думаю, что она застряла в цикле, но в моей программе нет реальных циклов). Это не мое воплощение пули, прежде чем кто-то начнет обвинять ее в том, что она замерзла, поскольку я это комментировал и менял вещи снова и снова.
public class HurtPlayer : MonoBehaviour {
public float timeToShoot;
private float timeToShootCounter;
private bool shot;
private Vector3 moveDirection;
public float timeBetweenShot;
public float timeBetweenShotCounter;
public Transform firePoint;
public GameObject Bullet;
// Use this for initialization
void Start()
{
shot = false;
timeToShootCounter = timeToShoot;
timeBetweenShotCounter = timeBetweenShot;
}
IEnumerator ExecuteAfterTime(float time)
{
yield return new WaitForSeconds(time);
}
// Update is called once per frame
void Update () {
if (shot == true)
{
timeBetweenShot -= Time.deltaTime;
timeToShoot -= Time.deltaTime;
if (timeBetweenShot <= 0f)
{
shot = false;
timeToShoot = timeToShootCounter;
timeBetweenShot = timeBetweenShotCounter;
}
}
}
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.tag == "player")
{
if(shot == false)
{
if (timeToShoot >= 0f)
{
shot = true;
while(shot == true)
{
Instantiate(Bullet, firePoint.position, firePoint.rotation);
if (timeBetweenShot <= 0f)
{
shot = false;
timeToShoot = timeToShootCounter;
timeBetweenShot = timeBetweenShotCounter;
}
}
}
}
}
}
Это мой код, прикрепленный к моей гвардии, который создает экземпляр пули, а также пытается использовать переменные «TimeToShoot» в качестве счетчика того, сколько времени осталось стрелять противнику, и «TimeBetweenShoot» в качестве счетчика того, как долго между выстрелами противник.
Это не работает и не задерживается Enumerator
.
Как любитель, я, очевидно, делаю что-то явно не так, но я понятия не имею, что я делаю неправильно или где, и буду очень признателен за вашу помощь.