【发布时间】:2020-04-21 14:35:16
【问题描述】:
所以我正在学习基础游戏开发课程,目前正在使用 Unity 开发游戏。直到现在我更新了我的统一版本时,我的游戏运行良好。为了让玩家真正受到伤害,我有一个方法,只有在脚本显式调用时才能达到。不知何故,没有附加脚本的地面损坏了我的播放器。
我已经发布了下面的代码。
这是播放器脚本的一部分
3 references
public void Hurt(int dmg, string yep)
{
HP -= dmg;
Debug.Log($"took {dmg} damage from{yep}. You now have {HP} HP left");
if (HP <= 0)
{
SceneManagement.Death();
}
}
这是附加到我的火焰对象的脚本的一部分
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag != "FlameTurret" && collision.gameObject.tag != "flame")
{
player.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
Destroy(this.gameObject);
}
}
这个附在敌人发射的射弹上
if (collision.gameObject.CompareTag("Player"))
{
if (!called)
{
collision.gameObject.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
called = true;
}
}
这是附在一个敌人身上
if (collision.gameObject.CompareTag("Player"))
{
if (!called)
{
collision.gameObject.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
called = true;
}
Destroy(this.gameObject);
}
带有“Ground”标签的东西都没有脚本,除了我发布的方法应该引用我的 Hurt() 方法,但地面仍然会损坏我的播放器。任何帮助将不胜感激!
【问题讨论】: