这是我第一次在 StackOverflow 上提问。
我已经完成了 Unity 3D 官方“Roguelike 2D”教程,并尝试自行扩展。当Player
试图走进一堵墙时,他反而破坏了它,最终突破了。
为了清楚起见,我删除了声音和动画命令。
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
hitWall.DamageWall (wallDamage);
}
而当他们Enemy
试图走进去时Player
,反而伤害了他,伤害了他。
protected override void OnCantMove <T> (T component)
{
Player hitPlayer = component as Player;
hitPlayer.LoseFood (playerDamage);
}
playerDamage
由 Enemy 脚本wallDamage
设置,由 Player 脚本设置(意味着两者都由造成伤害的一方设置。)由 PlayerLoseFood
和DamageWall
Wall 脚本设置(意味着两者都由受到伤害的一方设置。)
我希望Enemy
能够像Player
现在一样损坏墙壁。因此,我尝试将 Enemy 脚本的OnCantMove
部分更改为以下内容:
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
hitWall.DamageWall (wallDamage);
Player hitPlayer = component as Player;
hitPlayer.LoseFood (playerDamage);
}
和这个:
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
Player hitPlayer = component as Player;
if (hitWall) {hitWall.DamageWall (wallDamage);}
else if (hitPlayer) {hitPlayer.LoseFood (playerDamage);}
}
两者都没有按照我希望他们做的方式工作。我什至尝试将 的OnCantMove
功能替换为与撞墙Enemy
时相同的功能Player
,但这只会删除Enemy
必须撞墙的能力Player
,而不会使其撞墙。接下来我应该尝试什么,看看我是否能解决这个问题?
如果我设法让它发挥作用,我希望我也可以继续以其他方式扩展这款游戏,但我对此很陌生。感谢您的任何帮助和建议。