在碰撞时中断libgdx的动作

4
我正在使用libgdx开发游戏。我的Gameobjects都是Actor的子类。现在我想利用可以与Actors一起使用的动作。如果我的由键盘控制的玩家与电脑控制的敌人相撞,玩家应该被击退。我可以通过moveBy-Action来实现这一点。但是当我的玩家因为击退而仍在移动时,如果与墙壁或另一个僵尸相撞,动作应该中断。
有没有办法实现这一点?或者说,动作不适用于这种情况吗?
谢谢
1个回答

8
当然,有一种方法可以停止动作。
  1. 一种方法是使用actor.removeAction(Action action)从您的角色中删除该动作。
  2. 您可以使用actor.clearActions()清除您的角色动作。这会删除所有动作。
  3. 您可以重置您的ActionSequenceActionsequence.reset()action.reset()
  4. 通过覆盖您的演员的.act(float delta),在碰撞时停止更新操作
  5. 否则,请编写一个MyAction extends ActionMyAction extends TemporalAction类型,它覆盖了update (float percent)并具有一个布尔值用于表示是否被中断。如果被中断,则不更新,否则更新。
我建议您查看这些操作以了解它们的工作方式,并可能编写自己的可中断操作。(您自己的操作应该是最好的,因为它将符合您的需求)否则,在碰撞时删除操作。

哇,谢谢啊 (: 我想我会使用第五点 (: 听起来很不错。第四点似乎也可以用于动作之外的碰撞。谢谢 - Robert P
不用客气。我认为第五点会是最好的选择,所以去试试吧。 - bemeyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接