【发布时间】:2015-10-01 12:07:35
【问题描述】:
这是我第一次在 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 脚本设置(意味着两者都由造成伤害的一方设置。)LoseFood 和 DamageWall 由 Player 和墙脚本(意思是两者都是由受到伤害的人设置的。)
我希望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);}
}
两者都没有按照我希望的方式工作。我什至尝试将Enemy 的OnCantMove 功能替换为与Player 撞墙时相同,但这只会删除Enemy 必须撞到Player 的能力,而无需启用它撞墙。接下来我应该尝试什么,看看我是否能解决这个问题?
如果我设法让它发挥作用,我希望我也可以继续以其他方式扩展这款游戏,但我在这方面还很陌生。感谢您的任何帮助和建议。
【问题讨论】:
-
这个问题比较适合gamedev.stackexchange.com
标签: c# unity3d unity3d-2dtools roguelike