@ bobshellby
вы уничтожаете объект ракеты в том же кадре, в котором применяете силу взрыва.поэтому, прежде чем вы увидите эффект взрыва, ракета будет уничтожена.
Попробуйте использовать сопрограмму для функции уничтожения, чтобы вы могли добавить время ожидания.
void Start()
{
//Invoke("Kill", life);
}
// Update is called once per frame
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
if (isGrounded)
{
StartCoroutine( Kill());
}
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
//
void OnCollisionExit(Collision other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = false;
}
}
//Explosion code
IEnumerator Kill()
{
Vector3 explosionCenterPosition = transform.position;
rb.AddExplosionForce(explosionForce, explosionCenterPosition, explosionRadius);
yield return new WaitForSeconds(2f);
Destroy(gameObject);
}
Другое дело, что вычерез 5 секунд после запуска запускается функция kill, которая снова уничтожает ракету.Удалите это, поскольку вы уже проверяете это в обновлении, если ракета упала на землю или нет.