Часть кода работает, при столкновении с пулей (hp1 -= damage1;
), а вторая часть не работает.
Подскажите, в чем ошибся?
Вот выбранные части кода:
Player1.cs
private Bullet1 b1;
void Start()
{
b1 = FindObjectOfType<Bullet1>();
}
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet1")
{
hp1 -= damage1; // работает, hp1 уменьшается
Destroy1(); // не работает
}
}
void Destroy1()
{
b1.hit1 = true; // для скрипта Bullet1.cs, попадание
}
Bullet1.cs
public bool hit1;
void Update()
{
if (hit1)
{
hit1 = false;
LeanTween.delayedCall(0.7f, () =>
{
Destroy(gameObject);
});
}
}
Проблема не в LeanTween
, у меня все работает, если внутри игры нажать на паузу и вручную переключить bool
- hit
то все взрывается. До скрипта не доходит почему-то в момент касания, что hit = true;
Если же я меняю местами hp1 -= damage1;
и Destroy1();
, то у меня не происходит ничего -- урон не принимается. Значит, Destroy1();
не дает пройти коду дальше. Также, если просто написать b1.hit1 = true;
вместо Destroy1();
, то ситуация такая же.
Я проверил твой скрипт и у меня все работает. Попробуйте не использовать LeanTween Замените:
LeanTween.delayedCall(0.7f, () =>
{
Destroy(gameObject);
});
На:
Destroy(gameObject);
Скорее всего LeanTween.delayedCall() вызывается много раз и 0.7 секунд не успевают проходить до следующего вызова Update (время стает допустим 0.633 сек и в следующем Update меняется на 0.7f и также это ударяет по оптимизации, ведь зачем нам вызывать это в каждом кадре, если можно вызвать 1 раз. Вообще не знал про этот LeanTween даже). Это не самая лучшая идея для реализации этого алгоритма. Я вам рекомендую не делать скрипт Bullet1.cs и просто впихнуть всё это дело в метод Destroy1(). Не понадобится создавать и вешать скрипт на пулю (как вы наверное сделали) и будет + в производительность :) Кстати, вместо всяких delayedCall вы можете прописать Destroy(gameObject, time) и вместо time - время.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В некотором aspnet mvc приложении (под
Всем привет, никак не получается отправить другой программе комбинацию горячих клавиш Ctrl+0Они посылаются по очереди, но никак не вместе, есть...