gpt4 book ai didi

iOS SpriteKit : applyForce to physics body totally different effect depending on device model

转载 作者:可可西里 更新时间:2023-11-01 03:48:53 24 4
gpt4 key购买 nike

我和一个 friend 正在用 SpriteKit 制作一些东西的原型(prototype)。这不是我 friend 第一次使用它,但这是我第一次。

我们简单的控制了一个正方形。你可以在一个“地面”节点上来回奔跑,你可以触摸一个跳跃按钮来“跳跃”。

对于一组给定的质量、重力等数字,以下

[self.physicsBody applyForce:CGVectorMake(0, 1500000)];

在 iPad4 上以 iPhone 模式运行时(应用程序目前仅适用于 iPhone)会导致看起来正常的跳跃(几乎是一个小兔子跳),但在我的 5S 上跳跃大约高 20 到 40 倍,在 4S 上跳跃字面意思是高出 100 或 200 倍。 (“倍高”是目测估计的,但iPad看起来很正常,5S像超人跳,4S像超人吃了菠菜,跳起来老婆被扑灭了)

完全相同的代码在所有设备上运行。我不确定在哪里查看或可能导致此问题的原因。

最佳答案

如果您要即时应用它,您应该使用 applyImpulse 而不是 applyForce。关于 applyForce,Apple 文档状态

"The acceleration is applied for a single simulation step (one frame)."

这可能是步骤的非常时间差异导致了很大的差异,因为力在仅 1 帧上非常大.如果您正在使用 applyForce,您应该在模拟的每一步都这样做,以在一段时间内保持施加的力。通常跳跃的运动会持续很短的时间,因此经常使用 applyImpulse。

这是 Apple 文档中关于力与冲动的另一段引述:

"A force is applied for a length of time based on the amount of simulation time that passes between when you apply the force and when the next frame of the simulation is processed. So, to apply a continuous force to an body, you need to make the appropriate method calls each time a new frame is processed. Forces are usually used for continuous effects An impulse makes an instantaneous change to the body’s velocity that is independent of the amount of simulation time that has passed. Impulses are usually used for immediate changes to a body’s velocity."

关于iOS SpriteKit : applyForce to physics body totally different effect depending on device model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com