Tag: 物理

Cocos2d 3.0 + Chipmunk + CCAnimation:将animation物体移动到物体上。 怎么样?

我有一艘附有物理机构的船。 这艘船是静态的物理机构。 船从CCAnimateMoveTo移动从左到右。 当我点击屏幕时,我的angular色掉下来了。 我发现碰撞很好。 但是我想在碰撞后我的angular色就​​会落在船上,并继续前进。 人物是dynamic的身体。 链接到示例video: 示例video 我在这里创造一条船: – (void)createBoat { currentBoat = [CCSprite spriteWithImageNamed:@"Boat.png"]; currentBoat.position = ccp(0 – currentBoat.boundingBox.size.width, winSize.height * 0.2); // currentBoat.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){0, 0, currentBoat.contentSize.width, currentBoat.contentSize.height * 0.5} cornerRadius:0]; CGPoint shape[6]; shape[0] = ccp(0, 30); shape[1] = ccp(64, 10); shape[2] = ccp(128, 30); shape[3] = ccp(128, 0); shape[4] […]

如何用Sprite Kit在2D游戏中模拟Z轴的重力

我正在用iOS 7上的Sprite工具包编写2D球赛,目前正在努力进行一次物理模拟。 为了解释预期的行为:如果一个球落入一个茶杯,它会绕圈,放松速度,最后静止在杯子的中心。 我试着用重力来归档,但是精灵套件中的重力只适用于垂直的X轴和Y轴,而不是Z轴。 我也尝试通过在开始接触时根据茶杯中的当前球位置切换重力值与小物理体来使用水平重力。 但是一些联系人被丢弃,结果很遥远,看起来很现实。 我想我需要在更新方法中解决这个问题,但是我不知道要走哪条路。 任何build议非常欢迎,我需要提及的是,我不是math专家,请解释你的路要走。 🙂

SKSpriteKit在碰撞后保持恒速

我正在尝试使我的第一个iOS应用程序,目前遇到问题。 在我的比赛中,当球弹跳时,我希望它能以相同的速度弹回到相同的高度。 目前这样做很好。 但是,当我旋转六angular形,它打一个angular度,它结束了速度,并没有反弹到同一高度。 所以我的问题是:如何在碰撞时强制球保持相同的速度? 这是我的球节点的代码: func createBallNode(ballColor: String) -> SKSpriteNode { let ball = SKSpriteNode(imageNamed: ballColor) ball.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame)+30) ball.zPosition = 1 ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width/2) ball.physicsBody?.affectedByGravity = true ball.physicsBody?.restitution = 1 ball.physicsBody?.linearDamping = 0 ball.physicsBody?.friction = 0 ball.physicsBody?.categoryBitMask = ColliderType.Ball.rawValue ball.physicsBody?.contactTestBitMask = ColliderType.Rect.rawValue ball.physicsBody?.collisionBitMask = ColliderType.Rect.rawValue let centerX = ball.position.x […]

在使用Box2D,cocos2d和物理编辑器的视网膜显示PTM_RATIO

我有很多问题试图在我的精灵身上绘制身体形状。 我尝试了很多的组合,但我无法使其在视网膜显示器上工作。 我只支持iPhone视网膜和iPad(视网膜而不是视网膜)。 A. PTM_RATIO 第一个问题是,如果我想在所有设备中使用相同的物理,每个设备使用哪个PTM_RATIO。 我读了几个post,我不知道PTM代表“ Point To Meter ”还是“ Pixel To Meter ”。 ¿哪一列是正确的? B.物理学 我想要使​​用不同形状的不同图像来绘制地面,但为此我使用了两个最简单的types。 一个200x200px的图像,但身体只需要较低的200x80px矩形。 为了保持精灵方面,我使用200x200px的艺术为iPhone和iPad SD和400×400为iPad HD。 然后,我尝试为红色区域定义一个身体。 我尝试了所有可能的组合使用Physcs编辑器,我试图做手动也与顶点助手。 我做了iPad SD的工作,但不是视网膜显示(总是X2)。 我的verts: int num = 4; b2Vec2 verts[] = { b2Vec2(-100.0f / 100.0, -20.0f / 100.0), //A b2Vec2(100.0f / 100.0, -20.0f / 100.0), //B b2Vec2(100.0f / 100.0, -100.0f / 100.0), […]

SpriteKit联合:跟随身体

我被要求简化这个问题,所以这就是我正在做的事情。 我在SpriteKit的物理关节中挣扎(可能还有物理属性)。 我试过每一个子类和许多configuration,但接缝没有任何作品,或者我做错了什么。 我正在开发蛇游戏。 用户可以控制蛇头以恒定的速度向前移动,用户可以顺时针或逆时针旋转。 所有剩余的蛇的碎片应该跟着头 – 他们应该旅行完全相同的path,头一段时间前。 我认为对于这个游戏来说,拼接点应该是答案,哪个锚点恰好在元素之间的中心。 不幸的是结果并不完美。 结构应该是完美的圆形,但不是。 我附上代码,显示当前效果的gif。 有没有人有足够的经验给我任何build议什么属性的身体和/或关节应该在这里适用于预期的效果? 我的代码: class GameScene: SKScene { private var elements = [SKNode]() override func didMove(to view: SKView) { physicsWorld.gravity = CGVector(dx: 0, dy: 0) let dummyTurnNode = SKNode() dummyTurnNode.position = CGPoint(x: size.width / 2 – 50, y: size.height / 2) let dummyTurnBody = SKPhysicsBody(circleOfRadius: […]

Scenekit PhysicEngine跟随滚动球

我想跟随苹果的SceneKit中的旋转球体。 我向相机添加了一个LookAt Constraint,当球体向下落下时,球体向下移动,但是如果球体滚开,相机将停留在当前位置。 我希望凸轮像第三人称射击者那样跟随这个球体,距离它有一段预定的距离。 如果我把凸轮做成球体的一个小球,凸轮就会在球滚动的时候围绕它旋转。 任何想法如何我可以跟随与凸轮球?

Swift + Physics:碰撞时错误的angular度计算

我有一个简单的SpriteKit应用程序与墙壁和一个球。 两个都设置了SKPhysicsBody 。 当我向一个方向施加一个力时,我认为球在碰撞时以相同的angular度在墙上reflection,而在相反的方向上。 但有时我看到这个angular度很奇怪。 我玩了很多所有的physicsBody属性,但无法修复它。 有时第一reflection看起来不错,但是第三或第六reflection有时候是错误的。 我从不同的post看,人们有点自我计算“正确的方向”。 但是我无法想象SpriteKits物理引擎是不行的。 检查我的附加图像,了解我的意思。 有人可以帮忙吗? 我不想开始使用Swift的Box2d,因为这看起来对于我来说很难融入到Swift中。 这是我的GameScene.swift文件中的physicsWorld init,其中所有元素都添加到了: self.physicsWorld.gravity = CGVectorMake(0, 0) 添加我所有的代码会太多,所以我添加了重要的部分。 希望它足以进行分析。 像球,墙的所有元素都是SKSpriteNode的 这是球的physicsBody代码: self.physicsBody = SKPhysicsBody(circleOfRadius: Constants.Config.playersize+self.node.lineWidth) self.physicsBody?.restitution = 1 self.physicsBody?.friction = 0 self.physicsBody?.linearDamping = 1 self.physicsBody?.allowsRotation = false self.physicsBody?.categoryBitMask = Constants.Config.PhysicsCategory.Player self.physicsBody?.collisionBitMask = Constants.Config.PhysicsCategory.Wall | Constants.Config.PhysicsCategory.Enemy self.physicsBody?.contactTestBitMask = Constants.Config.PhysicsCategory.Wall | Constants.Config.PhysicsCategory.Enemy 这是墙的物理学体: el = SKSpriteNode(color: […]

如果使用CoreMotion / Accelerometer删除iPhone,则以编程方式进行检测

所以我写了一段代码,在上面的iOS 4.3中,我必须使用加速度计和陀螺仪来检测不同的移动手势。 Q1:是否有任何已经实现了移动/手势检测的开源代码? 如果不 Q2:现在我想检测iPhone是否掉线。 到目前为止,我所取得的成就是: CoreMotion API提供了userAcceleration ,其中(afaik)是用户给设备的加速度,或者是在某个方向(x,y或z)加速的设备,可以做的是:存储,比如前面的5-6个加速度参数值,可以检查其中的任何一个碰到大的负值,这基本上代表了突然减速。 但是这个解决scheme并不是非常优化,我想我需要先检测设备的自由下落运动。 任何想法如何解决这个问题? 更新:感谢Misch分享你的方法。 我完全没有想到总加速度。 我的确如你所说: “然而,你将不得不testing自己,什么意思是”总的加速度大致对应于地球的加速度“和”在一段时间内“你的情况。 加速度值实际上是在G中,所以我testing了“总加速度”值在0.9-1.1的范围内。 我检查了一段时间,最初我检查了updateInterval设置为1 / 20.0时连续四个值。 现在我已经放松了一点连续性的条件。 这是一个示例输出: 加速度= 0.090868 加速度= 0.074473 加速度= 0.159797 加速= 1.157513 加速= 1.224588 加速= 1.036272 加速度= 0.914698 加速= 0.904093 加速= 0.941516 加速度= 0.046362 加速度= 0.045109 加速度= 0.060045 我想,我还是要继续testing和调整价值。 如果你有任何优化,请分享,我知道为了帮助你需要看到自由落体加速度值的许多样本。 现在我想: 将加速度的值四舍五入到小数点后三位,并使用我正在使用的加速度范围。 可能是检查自由落体情况后,总加速度值是否突然下降。 你认为我引用的加速度值有点吵?

“推”匹配UIInterpolatingMotionEffect? (即访问UIInterpolatingMotionEffect上的“物理”)

使用UIInterpolatingMotionEffect,扭转iPhone,你可以有一个图像移动。 现在想象一下,使用UICollisionBehavior和UIDynamicItemBehavior,你会在屏幕上“反弹”一个红色块。 当用户扭曲iPhone:我想要的箱子“开始移动”与类似的物理感觉使用UIInterpolatingMotionEffect。 http://tinypic.com/player.php?v=b67mlc%3E&s=8#.VBVEq0uZNFx 另外:UX解释:弹性效果(例如:iPhone上的SMS)与iOS中的视差图像效果具有相同的“感觉”。 (通过“感觉”,我的意思是同样的速度,加速度。)这将是第三个效果:像“视差”,它会“轻微移动”,但会“继续移动”,反弹一点。 (你可以说,有点结合了弹性列表效果和视差效果的感觉。) 现在:使用CMAccelerometerData来描述我的描述是相对容易的,并且使用UIPushBehaviorModeInstantaneous来应用推送。 但是这是很多杂乱的代码。 相反,UIInterpolatingMotionEffect是可笑的容易使用。 本质上,我怎么能从UIInterpolatingMotionEffect(我将作为推)使用这些值。 干杯! 类似的想法… 只需显示UIInterpolatingMotionEffect的值? 它简单地问:如何才能轻松地从UIInterpolatingMotionEffect中“获取”值? 即,看起来不可思议的人不得不仔细分类CALayer等等。

iPhone上最快的逆平方根

我正在研究一个iPhone应用程序,涉及每秒完成数千次的某些物理计算。 我正在优化代码,以提高帧率。 我正在研究的其中一个部分是平方根的倒数。 现在,我正在使用Quake 3快速反平方根方法。 不过,经过一番研究,我听说使用NEON指令集有更快的方法 。 我不熟悉内联汇编,不知道如何使用NEON。 我试图实现math霓虹灯库,但我得到编译器错误,因为大多数基于NEON的function缺乏return 。 编辑:我突然得到一些“不清楚的问题”密切的选票。 虽然我觉得它很清楚,而且回答的人显然明白了,也许有人需要明确说明: 你怎么用氖来执行更快的计算? 这真的是得到iPhone上反平方根的最快方法吗? 编辑:我今天做了一些更正式的testing氖VS地震,但如果有的话,我现在更加不确定的结果: 应用内testing:(一个当前在app store中的invsqrt方法被修改的应用) 地震方法(由于在压力条件下平均FPS略有增加而领先) 霓虹灯(这是一个非常接近的电话,但似乎地震稍快) 1 / sqrtf()(有点更显着的差异,1-3 FPS的下降)。 “正式”testing(一个吞噬我手机CPU的应用程序,每个方法需要花费多less时间才能通过10000000个随机生成的浮点数组) 霓虹灯(显然是最快的,如果它是用来做两个sqrt一次速度的两倍)。 1 / sqrtf()(只比氖慢一点,这个令人惊讶的结果让我认为这个testing“没有结果”,直到我进一步调查) Quake(令人惊讶的是,这种方法比其他两种方法慢了几个数量级,鉴于其他testing的性能,这一点尤其令人吃惊)。 虽然地震对霓虹灯在应用程序性能testing中太接近无法说出任何事情,但在第一次testing中,地震vs 1 / sqrtf()非常清晰,第二次testing与输出的值非常一致。 然而最重要的是应用程序的性能,所以我要根据这个testing做出最终决定。