我试图在敌人死亡时发挥粒子效应,但它似乎在随机选择的一个而不是被击中的那个上发挥作用。然而,被击中的敌人仍然消失,仍然为得分加分。确定一个选定的敌人预制玩死亡粒子系统
目前我有三个脚本来执行这一点(所有已经缩短,所以我只显示相关的代码):
其中一个连接到在敌人投掷箱检测,如果他们与敌人的预制件相撞。
void OnCollisionEnter (Collision theCollision) {
if (canProjectileKill == true) {
// If the projectile hits any game object with the tag "Enemy" or "EnemyContainer".
if (theCollision.gameObject.tag == "Enemy") {
GameObject.Find("EnemyExplosion").GetComponent<enemyDeath>().ProjectileHasHitEnemy();
// Destroy the projectile itself.
Destroy (gameObject);
// Destroy the game object that the projectile has collided with (E.g. the enemy).
Destroy (theCollision.gameObject);
GameObject.Find("Manager").GetComponent<projectileSpawner>().deleteProjectile();
}
}
}
另一个附加到敌人预制件,检测他们是否被一个盒子击中。
void OnCollisionEnter (Collision theCollision) {
if(theCollision.gameObject.tag == "Projectile") {
GameObject.Find("EnemyExplosion").GetComponent<enemyDeath>().EnemyHasBeenHit();
}
}
我然后运行一个if语句,询问如果两个箱子一直打到敌人的预制,如果敌人预制已经在试图确定,而不是所有的人都一个预制受到了冲击箱。但是,这仍然行不通。
public bool HasProjectileHitEnemy;
public bool HasEnemyBeenHitByProjectile;
void Start() {
gameObject.particleSystem.Stop();
HasProjectileHitEnemy = false;
HasEnemyBeenHitByProjectile = false;
}
public void ProjectileHasHitEnemy() {
// From projectile.
HasProjectileHitEnemy = true;
}
public void EnemyHasBeenHit() {
// From enemy.
HasEnemyBeenHitByProjectile = true;
PlayParticleSystem();
}
public void PlayParticleSystem() {
if (HasEnemyBeenHitByProjectile == true && HasProjectileHitEnemy == true) {
gameObject.particleSystem.Play();
HasProjectileHitEnemy = false;
HasEnemyBeenHitByProjectile = false;
}
}
}
我知道这是一个长期的问题,但我一直停留在这一个多星期,所以任何帮助,将不胜感激。谢谢:)
很长的问题。完全不清楚你在问什么。 –
只是简化它,所以希望它会更有意义。 – bconway99