I want to let when my plane touches the powerbox, the powerbox disappears, and the ammo will shoot according to the motion of the plane. However, if I type destroy(gameObject), the function will only destroy the gameobject and the ammo will not shoot. When I delete destroy(gameObject), the powerbox will not be destroyed. But the ammo will only shoot on one side and will not shoot according to the motion of the plane. I have tried so long.
void Update()
{
gameObject.transform.position += new Vector3(0, -0.02f, 0);
ammo2time += Time.deltaTime;
if (hitpowerbox == true)
{
if (ammo2time > 0.30f)
{
Vector3 ammo2_pos = Ship.transform.position + new Vector3(2, 0.1f, 0);
Instantiate(ammo2, ammo2_pos, Ship.transform.rotation);
ammo2time = 0;
}
else
{ }
}
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.tag == "plane")
{
hitpowerbox = true;
}
Destroy(gameObject);
}
It seems, as has been mentioned in a [previous answer to your question][1], you're (for starters) destroying the object before it gets a chance to do anything in the next Update. [1]: https://answers.unity.com/questions/1696831/why-the-value-of-caseswitch-cant-change.html
– JPhilippput the hitpowerbox field on another script on the plane with the update logic instead of the bullet then in ur on trigger enter u can get the plane script using GetComponent and then set hitpowerbox = true on that script.
– ShadyProductionsAnd delay the destriy function? public static void Destroy(Object obj, float t = 0.0F); So Destroy (Object, 3); to delay it 3 seconds
– tormentoarmagedoom