我正在制作一款俄罗斯方块类型的游戏,我希望我的方块以恒定的速度下落。我想使用 SpriteKit Physics Words Gravity 来实现它。
问题是重力必然是加速度,因此当它们下落时,块开始移动得更快。我知道我可以关闭重力并使用动作来移动块,但我希望用重力来做。
有没有办法让 SpriteKit 世界中的万有引力成为线性恒速?
我正在制作一款俄罗斯方块类型的游戏,我希望我的方块以恒定的速度下落。我想使用 SpriteKit Physics Words Gravity 来实现它。
问题是重力必然是加速度,因此当它们下落时,块开始移动得更快。我知道我可以关闭重力并使用动作来移动块,但我希望用重力来做。
有没有办法让 SpriteKit 世界中的万有引力成为线性恒速?
使用默认物理,您将无法实现您正在寻找的东西。
在 Site Kit 中 Gravity 的定义中很清楚是加速度,所以不可能用它来实现线速度。
一个向量,它指定应用于物理世界中物理物体的重力加速度。
但是,您可以有一些变通方法来实现您想要的行为。
我认为最好的方法是限制最大速度,默认情况下重力工作。
2 - 限制最大速度
在didSimulatePhysics()中,您可以验证对象的速度,并对其进行限制。
像这样(感谢@Andrew,在原帖中)
- (void)didSimulatePhysics {
if (node.physicsBody.velocity.x < MAX_SPEED_X) {
node.physicsBody.velocity = CGVectorMake(MAX_SPEED_X, MAX_SPEED_Y);
}
}