碰撞时中断 libgdx 操作

Posted

技术标签:

【中文标题】碰撞时中断 libgdx 操作【英文标题】:Interrupt libgdx Action on collision 【发布时间】:2014-02-01 01:36:39 【问题描述】:

我正在使用 libgdx 开发游戏。我的游戏对象都是 Actor 的子类。现在我想利用可以与演员一起使用的动作。如果我的键控播放器与计算机控制的敌人发生碰撞,则应该将播放器击退。我可以通过 moveBy-Action 得到这个。但是当我的玩家由于击退而仍在移动时与墙或另一个僵尸碰撞时,动作应该中断。 有没有办法做到这一点?还是不是为了这样的事情而采取的行动?

谢谢

【问题讨论】:

【参考方案1】:

当然有办法停止行动。

    一种方法是使用 actor.removeAction(Action action)。 您可以使用actor.clearActions() 清除您的演员动作。这会删除所有操作。 您可以重置您的ActionSequenceActionsequence.reset()action.reset() 通过覆盖你的actor的.act(float delta)来停止在碰撞时更新动作 否则写一个MyAction extends ActionMyAction extends TemporalAction 覆盖update (float percent) 的类型 并且有一个用于中断的布尔值。如果中断不更新如果 不更新。

我建议查看一下这些动作,看看它们是如何工作的,也许可以编写你自己的可以被中断的动作。 (您自己的操作应该是最好的,因为这将是您喜欢的方式)否则删除碰撞操作。

【讨论】:

哇,谢谢伙计(:我想我会使用第 5 点(:听起来很棒。第 4 点似乎也可用于动作之外的碰撞。谢谢 欢迎您。我认为第 5 点将是最好的,所以去吧。

以上是关于碰撞时中断 libgdx 操作的主要内容,如果未能解决你的问题,请参考以下文章

在 LIBGDX 中初始化时碰撞位达到最大值

为没有Box2D的libgdx Actors实现冲突检测

超出短值以检测LIBGDX中的冲突

如何检查两个Box2d机构是否在任何时刻发生碰撞/重叠?

在代码执行进入 Dll 或 Lib 空间时中断

在 Libgdx 中创建水