Неясно из предоставленного кода, но вы хотите, чтобы код для player.hitBox.Intersects (TriggerBoxRockFall) срабатывал только тогда, когда вы находитесь под ним.
Изменить код:
if (player.hitBox.Intersects(TriggerBoxRockFall) && !rockFalling)
{
rockFalling = true;
rock.velocity = new Vector3(0, 0.2f, 0);
}
до:
if (player.Velocity.Y < 0 && player.hitBox.Intersects(TriggerBoxRockFall) && !rockFalling)
{
rockFalling = true;
rock.velocity = new Vector3(0, 0.2f, 0);
}
Как примечание: переместите как можно больше кода из Game1. Гравитация скалы должна быть сделана в Скале, а не в Game1.
например:
if (player.Velocity.Y < 0 && player.hitBox.Intersects(TriggerBoxRockFall) && !rockFalling)
{
rockFalling = true;
rock.velocity = new Vector3(0, 0.2f, 0);
rock.GravityApplies = true;
}