- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我有一个具有 physicsBody 的对象,重力会影响它。它也是动态的。
目前,当用户触摸屏幕时,我运行代码:
应用力(0, 400)
物体向上移动大约 200,然后由于重力而回落。这只会在某些时候发生。其他时候,它会导致对象仅在 Y 方向移动 50 个单位。
我找不到模式...我把我的项目放在 dropbox 上,这样如果有人愿意看它就可以打开它。
https://www.dropbox.com/sh/z0nt79pd0l5psfg/bJTbaS2JpY
编辑:这似乎发生在玩家在撞击后轻微弹离地面片刻时。有什么方法可以让播放器完全不弹跳吗?
编辑 2:我尝试使用摩擦参数来解决这个问题,并且只允许玩家在摩擦为 0 时“跳跃”(你会认为这将是玩家在空中的所有情况)但摩擦似乎是始终大于 0。我还能如何检测玩家是否正在触摸物体(除了使用 y 位置)?
谢谢
最佳答案
建议的解决方案
如果您正在尝试实现跳跃功能,我建议您查看 applyImpulse
而不是 applyForce
。这是两者之间的区别,如 Sprite Kit Programming Guide 中所述:
You can choose to apply either a force or an impulse:
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.
跳跃实际上是 body 速度的瞬时变化,这意味着您应该施加冲量而不是力。要使用 applyImpulse:
方法,计算出所需的瞬时速度变化,乘以 body 质量,并将其用作函数中的 impulse
参数。我认为您会看到更好的结果。
对意外行为的解释
如果您在 update:
函数之外调用 applyForce:
,发生的情况是您的力乘以您申请之间耗时量力以及何时处理模拟的下一帧。此乘数不是常数,因此每次以这种方式调用 applyForce:
时,您都会看到不同的速度变化。
关于objective-c - applyForce(0, 400) - SpriteKit 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834932/
在我的项目中,我有我的主角 body 。只要按下屏幕,我就希望它在 y 轴上向下移动。我用 试过了 public boolean touchUp(int screenX, int screenY, i
我在 IOS/cocos2D/Box2D 游戏中使用 b2Body->ApplyForce() 时遇到问题。我有一个球对象,我正在施加力来模拟高尔夫球杆对它的击打。用户设置射门的角度和力量,然后点击射
我想让我的角色强行向右移动。但它不适用于下面的这段代码。我不知道我在这里错过了什么,但是玩家仍然站在底部没有任何 Action 。有什么线索吗? // MyScene.h -(void)update:
使用 box2d 在 javascript 中学习游戏编码的一部分,我尝试使用箭头键事件在 4 个方向上移动矩形体(想象为汽车)。 为此,我创建了一个无重力世界,其中静态物体(即 2 个平行边)作为道
我有一个在屏幕上弹跳的球,当调用函数 touchesEnded 时球开始弹跳: override func touchesEnded(_ touches: Set, with event: U
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在使用 Box2D 做一个简单的射击游戏,用户需要选择一个角度和力来射球并击中某物。 (类似于愤怒的小鸟)。我的球的初始位置是静止的,玩家可以选择射门的角度和力量。为此,我调用了 ApplyFor
尽管在 box2d 前花了几个小时,但我仍然不明白 applyforce 和 applyimpulse 是如何工作的。我尝试使用一些视觉效果来更好地理解正在发生的事情(通过在 body 位置和应用点之
我使用下面列出的代码作为 SpriteKit 的实验。我所做的是对它施加与重力效应相同的力,但使用反平行矢量(物体质量设置为 1.0)。该函数通过更新函数在每一帧上执行。我希望对象根本不会移动,因为
当对动态物体施加力时,即使脉冲设置为 false,该力似乎也不会持续。 我有一个带有 physicsBody 的 sphereNode:dynamic,mass=1 和 damping=0。世界重力设
我有一个 sprite 节点,它响应于施加在其连接的 physicsBody 上的重力而出现和下落。 很好。 现在,我想使用 applyForce 在它下落时向某个方向稍微插入它。 不幸的是,无论我将
所以我有一个具有 physicsBody 的对象,重力会影响它。它也是动态的。 目前,当用户触摸屏幕时,我运行代码: 应用力(0, 400) 物体向上移动大约 200,然后由于重力而回落。这只会在某些
我遇到了最奇怪的行为,物理引擎决定如果有太多其他物体(圆形 SKPhysicsBody)插入它(使用 applyForce()),墙壁(矩形 SKPhysicsBody)就会破裂 据我所知,Sprit
我和一个 friend 正在用 SpriteKit 制作一些东西的原型(prototype)。这不是我 friend 第一次使用它,但这是我第一次。 我们简单的控制了一个正方形。你可以在一个“地面”节
我是一名优秀的程序员,十分优秀!