Questions tagged «movement»

“平移”的简单术语,通常是指从A点到B点的实体位置变化。


4
两点之间的弯曲运动
有什么好的技术可以使对象以良好的弯曲运动在各点之间移动? 最终位置也可以在运动中,例如寻的导弹的轨迹。
15 xna  2d  movement 

3
AI移动定制形状的宇宙飞船(形状会影响移动行为)
我正在设计一个基于网络回合的3D-6DOF太空舰队战斗策略游戏,该游戏很大程度上依赖于船只定制。让我稍微解释一下游戏,因为您需要对游戏有所了解才能提出问题。 我的目标是能够创建具有自定义形状和附加模块(螺旋桨,牵引梁...)的自有舰队,这将给每艘船带来好处和不利之处,因此您拥有许多不同的舰队分布。例如,长船在侧面带有两个螺旋桨将使该船容易绕该飞机旋转,除非您在后面放置许多螺旋桨,否则较大的船将缓慢移动(因此,在移动时会花费更多的“构造”点和精力,它将使只能朝那个方向快速移动。)我计划围绕此功能平衡所有游戏。 游戏将围绕两个阶段旋转:命令和战斗阶段。在订购阶段,您将指挥不同的船只。当所有玩家都完成了命令阶段后,战斗阶段便开始了,并且船舶命令会在一段时间内实时得到解决,然后动作会暂停并进入一个新的命令阶段。 当我想到玩家的输入时,问题就来了。要移动船舶,如果要转向,向前行驶,制动,就地旋转,则需要打开或关闭不同的螺旋桨...这些螺旋桨不必全力以赴,因此您可以实现更大的运动较少螺旋桨的组合。 我认为这种方法有点无聊。玩家不想摆弄马达或其他任何东西,而只想移动和杀死。我打算让玩家向这些船只下达命令的方式是通过目的地和旋转,然后AI将计算正确的螺旋桨功率以实现该移动和旋转。在整个转弯计算中,推进力不必相同(在发出订单后),因此,如果船在移动时做出反应,动态地调整螺旋桨的功率以满足其需求,那将是很酷的,但可能实施起来非常困难,游戏真正不需要它。 在这两种情况下,人工智能将如何决定激活哪个螺旋桨以实现最佳(或至少不是最差)轨迹? 我虽然讲一些方法: 学习AI:船型将通过反复试验来了解它们的运动,通过更多用途来调整其行为,并最终变得“智能”。我不想涉足AI编码领域,我认为这可能会让玩家感到沮丧(即使您可以让它不玩而学习)。 预先计算的时间步长运动:在造船时,将计算给定时间间隔内每种螺旋桨配置和功率的所有可能运动。内存密集,难看,不好。 预先计算的轨迹:与上面相同,但不是每个增量时间,而是整个轨迹,然后将尽可能拟合整个轨迹。在整个战斗阶段都需要固定的螺旋桨配置,并且仍然需要占用大量内存,难看且不好。 持续的暴力逼迫: AI会在整个战斗阶段连续检查所有可能的螺旋桨配置,并预先计算几个时间步长,并据此确定最佳的时间步长。骗局:现在的好东西以后可能就没那么好了,而且它占用的CPU太多,很丑,而且很糟。 单次蛮力逼迫:与上面相同,但仅在模拟开始时就蛮力逼迫,因此在整个战斗阶段都需要恒定的螺旋桨配置。 连续角度检查:这不是完整的运动方法,而是一种丢弃“愚蠢”螺旋桨配置的方法。给定当前螺旋桨的法向矢量和最后一个矢量,您可以根据角度近似估算螺旋桨所需的功率。您必须在整个战斗阶段中连续进行此操作。我最近想出了这个,所以我没想太多。先验地,它也有“现在好了,以后可能就没那么好了”的缺点,它也不在乎其他螺旋桨,它们可以一起做出更好的推进配置。 我真的被困在这里。有任何想法吗?


3
物体在完全运动中彼此跟随的技术?
我想知道对象如何在它们前面的对象先前位置上方移动时彼此跟随。当引导对象停止时,所有跟随的对象应停止在其位置。那么如何实现呢? 像这样: 编辑: 我要实现的是,以下所有对象“走”前面的领先对象所走的路径。所有其他对象仅以领先对象的速度移动(这可以通过将速度矢量传递给所有后续对象)来实现。但是,如何让所有对象在路径上移动/暂停,同时又保持它们彼此之间的距离。
14 movement 

2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

2
如何应对自上而下的RPG运动?
我有一个用Java编写的游戏。这是自上而下的RPG,我正在尝试处理世界上的运动。这个世界在很大程度上是程序性的,我很难解决如何处理角色在世界各地的移动以及如何将更改呈现到屏幕上。我将世界加载到包含所有图块的块中。 我该如何应对角色移动? 我很沮丧,无法弄清楚应该去哪里。 编辑:好吧,我对手头的问题很抽象。 现在,我只能想到将所有内容严格地粘贴到2D数组中并在块中保存块ID和播放器偏移,否则我可以“浮动”所有内容并在块之间移动。
13 java  tiles  rpg  movement 

1
是否有可以处理不同运动类型的寻路算法?
我正在为BattleTech桌游模拟器http://en.wikipedia.org/wiki/BattleTech开发一个机器人,它是回合制的。 木板分为六边形,每个都有不同的地形类型和标高。您驾驶一个在它们上方移动的机器人,以摧毁其他机器人。 我只知道Dijkstra和A *寻路算法,但是问题是有3种类型的运动:步行,奔跑和跳跃几个六角形(每个都有自己的规则)。走路和跑步几乎相同。 最佳路径可以是组合,也可以是每种运动类型。这是地图的示例http://megamek.info/sites/default/files/isometric_view.png 您是否知道用于这种复杂寻路的好算法,或者为每种运动类型组合A *结果的方法?

2
如何在大型网络世界中处理实体寻路和运动?
考虑到上面的图像将瓷砖分成32x32的框,我有一个实体被标记为“ aggro”附近的玩家。我希望这个怪物理想地追逐玩家(并继续追逐玩家一段时间)。目前,我的唯一动作是使用一个用于远程实体的简单插补器完成的,这是可行的,因为动作更新之间的差距很小。 我不能成功地仅仅告诉客户怪物想要移动到他/她所处的位置,因为这将导致实体移动得比其应该快得多(这可以通过对插值函数使用一些数学运算来解决) -有效),但更重要的是,它看起来不太现实,可能会夹住墙壁!如果可以避免,我不想在服务器上模拟整个运动……虽然我想我可以,但是仍然不能解决裁剪问题。我怀疑该解决方案涉及一些寻路,并向客户端发送定期的节点更新,并让它们模拟运动,但是我不确定。 谢谢!

2
我正在寻找使用向量创建逼真的汽车运动
我已经仔细检查了如何执行此操作,并找到了此http://www.helixsoft.nl/articles/circle/sincos.htm我已经尝试了一下,但是显示的大多数功能都无法正常工作,我只是出错了因为它们不存在。我看过cos和sin函数,但不了解如何使用它们或如何使用矢量使汽车运动正常工作。我没有代码,因为我不确定该怎么办。 任何帮助表示赞赏。 编辑: 我有一些限制,必须在我的游戏中使用TL引擎,不允许添加任何形式的物理引擎。必须使用c ++编程。这是我尝试遵循我提供的链接中所做的操作后得到的示例。 if(myEngine->KeyHeld(Key_W)) { length += carSpeedIncrement; } if(myEngine->KeyHeld(Key_S)) { length -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_A)) { angle -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_D)) { angle += carSpeedIncrement; } carVolocityX = cos(angle); carVolocityZ = cos(angle); car->MoveX(carVolocityX * frameTime); car->MoveZ(carVolocityZ * frameTime);

4
我的角色会在哪里停下来?
许多年前,我为预算伪3D游戏编写了一些AI。我从来没有真正计算出最好的方法,这是计算一次,如果敌人现在停下来了,那敌人会去哪里。例如: 敌人目前位于X = 540.0。 敌人以每帧10像素向右移动。 当敌人想要停止时,它的速度将每帧降低1像素,直到达到零。 有没有一个简单的公式可以让我知道敌人完全停止时其最终位置?我最终对可以满足我的需求的偏移量进行了预先计算和硬编码,但对于速度不同的敌人,则必须分别计算。

2
如何用客户端预测来补偿运动对象?
我正在实现一个支持类似Star Control的近战游戏服务器。因此,您有飞船和射击船,它们具有超简单的速度/加速度/减震物理原理来驱动运动。 我已经阅读了Valve,Gafferon和Gambetta,并实现了Gambetta的算法来进行客户预测: 客户端预测通过在服务器上更新其位置来对玩家船进行工作,然后将服务器尚未处理的输入重新应用于玩家船。 不幸的是,它不适用于我的游戏。我认为这与Gambetta的示例没有考虑已经移动的对象或逐步更新的命令有关。(“步”是指帧)。因此,在我的游戏中,玩家抬起脚来加速(已经移动)的飞船,该飞船在客户端上继续移动,将命令发送到服务器,通常在下一步从服务器接收世界快照。我得到更多类似的东西: 该播放器命令在客户端步骤3运行,但在服务器上仅在服务器步骤5运行。到客户端在客户端步骤6接收到世界快照时,该预测已经完成,尤其是在速度更快的情况下。 问题的症结在于客户端在步骤5运行命令,而服务器在步骤6运行命令。我考虑过可能会使用命令发送客户端步骤,并让服务器回滚并使用客户端时间步骤重新运行命令。但是,这可能会导致许多其他问题-例如自回滚以来收到的命令发生了什么,或者作弊客户端如何通过更改发送的步骤来加以利用。 从Google 读取和观看此类视频时,提到了一种不同的方法,您可以逐步更改播放器的位置,以使其与快照的位置匹配。 我的问题: 您能使Gambetta的算法以恒定的步幅运行吗?还是在概念上与我的游戏不兼容? 那么逐步逐步插值是正确的方法吗?如果是这样,您如何从客户位置插值一个已经移动的对象以匹配刚从服务器接收到的对象? 这些方法,渐进插值法和Gambetta算法可以串联使用,还是互斥?

2
在两个联网状态之间插值?
我在客户端上模拟了许多实体(它们的速度以每帧为基础添加到它们的位置中),我让它们自己推算。他们发送有关上次被查看的地点及其速度变化的更新。效果很好,其他玩家也看到了这项工作。但是,一段时间后,这些播放器开始不同步。这是因为延迟。 我想知道如何在状态之间进行插值,以使它们看起来处于正确的位置。我知道玩家最后一次看到的位置以及他们当前的速度,但是插值到最后一次看到的状态会导致玩家实际向后移动。我根本不能对其他客户使用速度,而只是将它们“拖”向适当的方向,但是我认为这会引起锯齿运动。有哪些选择?

2
如何在2D平台游戏机中使角色在不平坦的墙壁上行走?
我想要一个可玩的角色,他可以以任何角度(包括侧身和倒置)在有机表面上“行走”。通过具有倾斜和弯曲特征的“有机”水准仪代替90度角的直线。 我目前正在从事AS3(中等业余经验)的工作,并使用Nape(几乎是新手)来进行基于重力的基本物理学,该行走机械手显然是一个例外。 有没有可能使用Nape约束的程序方法来进行这种步行动作?还是最好按照水平面的轮廓创建明确的步行“路径”,并使用它们来约束步行运动?

2
如何将点击拖动动作限制在某个区域?
对于某些通用标题,我深表歉意。我真的对如何完成我想做的事情并不了解,这甚至使研究可能的解决方案变得更加困难。 我正在尝试实现各种路径标记(也许有一个最合适的名称,但这是我能想到的最好的名称)。 在玩家前面将有一个路径标记,它将确定玩家完成转弯计划后的移动方式。玩家可以单击并拖动标记到他们选择的位置,但是标记只能在定义的工作区域(灰色位)内移动。 所以我现在遇到两个问题: 首先,我应该如何准确定义该可行区域?我可以想象,可能有两个向量以玩家为起点来形成可行的角度,也许这两个弧线可能来自以玩家为中心的圆,但是我绝对不知道如何将所有这些一起。 其次,在定义了可以放置标记的区域之后,如何强制标记应仅停留在该区域内?例如,如果玩家单击并拖动标记,则标记可以在工作区域内自由移动,但不能离开该区域的边界。因此,举例来说,如果玩家开始向上拖动标记,它将向上移动,直到碰到工作区域的末端(下面的第一张图),但是如果此后玩家开始侧向拖动,则标记必须跟随拖动同时在区域内(下面的第二张图)。 我希望这不会太令人困惑。谢谢你们。 编辑:如果这有所作为,我将C + +与Marmalade SDK结合使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.