首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一个动态物体相对于另一个动态物体移动

将一个动态物体相对于另一个动态物体移动
EN

Stack Overflow用户
提问于 2015-01-19 17:23:21
回答 1查看 243关注 0票数 1

我面临着一些我无法解决的问题。我有摇摆平台(body1)和英雄(body2)站在上面。站台在摇摆,英雄在站台上左右移动。

在一开始,我希望英雄只是站在平台上,而不是改变它的位置相对于平台。我加入了SKPhysicsJointFixed,加入了平台和英雄,实现了这一点。

然后,在游戏中的某个时刻,我希望英雄沿着平台运行,这意味着Y相对于平台应该保持不变,X应该增长。我找到的唯一解决方案是使英雄身体保持静态,并改变它在didSimulatePhysics中的位置。这种做法的问题是,这种立场没有准确地改变。与平台位置相比,英雄位置滞后于一个框架。

当英雄到达站台的右端,他应该停止移动,再次站在站台上。所以我让英雄身体静止,再加上固定关节。而由于英雄地位的变化与滞后,相对于平台而言,英雄的位置是不正确的。有时它会停止平台表面以下的一些像素,有时会停止一些高于表面的像素。

因此,是否有其他方法来推动英雄沿着平台,英雄的身体应该始终保持动态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 01:02:35

我有一个移动浮动平台的游戏。要获得正确的相对速度,最简单、最动态的方法就是简单地调整速度。以下是我为实现这一目标而做的一个简化版本。

在我的游戏循环中,我有以下内容:

代码语言:javascript
复制
if heroOnBridge {
    hero.extraMotion = floatingBridge.physicsBody!.velocity
} else {
    hero.extraMotion = CGVector(dx:0,dy:0)
}

这里我要做的是不断地寻找我的英雄是否在一座移动的桥上,如果是的话,我把我的英雄的“额外的运动”属性设置为我所处的桥梁的速度。如果我不在桥上,那么我就不加任何额外的速度。请注意,我没有说明heroOnBridge是如何计算的,因为它实际上取决于您如何定义是否在平台上。在我的例子中,我假设您在一个平台上,如果您与平台框架相交,并且在地面上。

然后,在我计算我的英雄的速度取决于他的方向(左,右,跳等),我只是添加到英雄的速度extraMotion

如果你还没有,我建议你在游戏循环中有一个区域来处理你角色的动作。它将允许你改变你的英雄的速度取决于某些因素(在空中,跳跃,左右移动,在平台上,等等)。

如果你需要更多的帮助,计算速度部分,让我知道,我会张贴更多的我的代码。您也可能希望阅读我的答案here,以平稳和动态地设置速度。

记住,在大多数情况下,你永远不想直接设置任何位置,总是尝试设定必要的速度来在一段时间内达到这个位置。这防止了非常紧张和不可预测的运动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28030259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档