首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高每个触点的节点速度

提高每个触点的节点速度
EN

Stack Overflow用户
提问于 2014-01-26 16:47:28
回答 1查看 178关注 0票数 0

在我的didbeginContact中,我添加了如下代码:

代码语言:javascript
复制
// increase node speed on each contact
CGVector thrustVector = CGVectorMake(_node.physicsBody.velocity.dx+100,
                                     _node.physicsBody.velocity.dy+100);
[_node.physicsBody applyForce:thrustVector];

但它并不是在与另一个节点的每一个接触上都提高其速度。每次接触时,它都会反弹一点(更多)。

我也试过:

代码语言:javascript
复制
// increase node speed on each contact
_node.physicsBody.restitution = _node.physicsBody.restitution + 0.001f;
NSLog(@"current node restitution: %f", _node.physicsBody.restitution);

但是当节点跳得太快时,它会突然穿过其他本应是墙的节点。

但我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 18:18:08

与其施加武力,不如尝试施加一种冲动,以获得更即时的效果:

代码语言:javascript
复制
[_node.physicsBody applyImpulse:thrustVector];

请记住,您使用的是基于节点当前速度的矢量,因此如果在此期间下降,则脉冲也会更小。

如果节点移动得太快,它可能会在呈现新帧之前完全通过另一个主体(墙),因此不会检测到冲突。有一个属性可以在这样快的物体上执行更昂贵的计算,_node.physicsBody.usesPreciseCollisionDetection = YES

然而,即使这可能是不令人满意的,如果你达到极限速度。您可能需要实现一些手动检查,如果节点仍然在-(void)didSimulatePhysics方法中边缘墙的范围内。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21366289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档