【发布时间】:2018-10-20 23:47:19
【问题描述】:
我正在制作 2D 平台游戏,但我遇到了奇怪的错误 - 当我击中一个敌人时,该类型的其他每个敌人都会获得相同的状态。我的意思是当我的玩家用剑击中其中一个时,我希望他们进入“愤怒”状态。
问题如下:
->用剑击中敌人 1,
->Enemy1 受到伤害并进入“愤怒”状态,
->Enemy2/3/4/5 没有受到伤害,而是进入了“愤怒”状态。
如果每个人都受到伤害,那我为什么要遭受这种情况。我认为原因在我的伤害脚本中。如果有人有想法,我会很高兴听到它。提前致谢。
public void DealDmg()
{
blob = FindObjectOfType<EnemyScript>();
if (attackPos.gameObject.activeSelf == true)
{
Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(attackPos.position, attackRange, whatIsEnemy);
for (int i = 0; i < enemiesToDamage.Length; i++)
{
EnemyScript enemyScript = enemiesToDamage[i].GetComponent<EnemyScript>();
enemyScript.GetComponent<EnemyScript>().TakeDmg(damage);
if (gameObject.GetComponent<PlayerControls>().facingRight == true)
{
enemyScript.GetComponent<Rigidbody2D>().AddForce(new Vector2(30f, 20f), ForceMode2D.Impulse);
StartCoroutine("ResetValues");
blob.CalmLogic();
}
else if (gameObject.GetComponent<PlayerControls>().facingRight == false)
{
enemyScript.GetComponent<Rigidbody2D>().AddForce(new Vector2(-30f, 20f), ForceMode2D.Impulse);
StartCoroutine("ResetValues");
blob.CalmLogic();
}
}
attackPos.gameObject.SetActive(false);
}
}
public IEnumerator ResetValues()
{
gotHit = true;
blob.gotAngry = true;
yield return new WaitForSeconds(resetValuesDelay);
gotHit = false;
yield return new WaitForSeconds(resetValuesDelay);
blob.gotAngry = false;
}
【问题讨论】:
标签: unity3d