@AunPra

Нужно, чтобы враг бил через каждые три секунды и лишь при прикосновении с игроком. Как это сделать?

Вроде бы я сделал всё верно, враг бьёт и лишь при соприкосновении, но почему-то лишь раз, далее - вообще никак. Время перерыва между ударами решил сделать с помощью цикла while, но всё равно почему-то не работает. Если нужно, могу скинуть код. Помогите, пожалуйста, совсем ещё новичок
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 3
@keksmr
Unity разработчик
У обоих должен быть коллайдер без галочки триггера
public bool atack = false;
void OnCollisionEnter2D(Collision2D col)
        {
                if (col.gameObject.tag== "vrag") 
                {
                         atack = true;
                }
        }
public void FixedUpdate()
{
      if(atack){
               int time = 0;
               time += 1;
               if(time == 3)
               {
                   time = 0;
                   //Делаешь атаку
               }
       }
}
Ответ написан
CHIDWI
@CHIDWI
Изучаю C#, Unity3D
While лучше не использовать и делать атаку по таймеру как в примере выше.
Ответ написан
kreo_OL
@kreo_OL
Медузко -_-
Примерно так

private void OnCollisionStay(Collision other)
    {
        go = other.gameObject;
        if (!go.CompareTag("Player"))
            return;
        Attack();
    }

    private void Attack()
    {
        if (gameEntity.isEnemyAttack)
        {
            gameEntity.isEnemyAttack = false;
            gameEntity.basicEnemy.Cooldown = cooldown;
        }
    }

В апдейте считаете таймер и при достижение времени делаете gameEntity.isEnemyAttack = true;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы