- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 cocos2d 和 SpriteBuilder 制作游戏。有一个英雄 Sprite 和硬币,应该由他收集。这是一款水平卷轴游戏,因此每次英雄触摸一枚硬币时,这枚硬币都会将其 x 坐标向右移动 2000px,并随机生成新的 y 坐标。使用更新方法,我将它作为"new"硬币移动到可见区域。但是当英雄飞过并且没有收集它时,硬币只有在它已经离开屏幕时才必须改变坐标,所以我尝试了这个解决方案:
-(void)update:(CCTime)delta{
_coin.position=ccp(_coin.position.x - delta * scrollSpeed, _coinY);
if (CGRectIntersectsRect(_hero.boundingBox,_coin.boundingBox)) {
_coinY=arc4random() % 801 + 100;
_coin.position=ccp(_coin.position.x + 2000.f,_coinY);
}
else if(_hero.position.x >= _coin.position.x + 150){
_coinY=arc4random() % 801 + 100;
_coin.position=ccp(_coin.position.x + 2000.f,_coinY);
}
有效,但之后我发现了一个小错误(我不确定,是否与这段代码有关):有时,当英雄碰到硬币时,英雄就像被推到左边一样。我不知道为什么。
最佳答案
我发现您的方法有两个问题:
<强>1。硬币英雄弹跳。
要解决此问题,您需要将硬币设为 sensor 。这样您仍然会收到有关碰撞的通知,但英雄只会穿过硬币而不会真正击中它。
我不确定你是否可以在 SpriteBuilder 中设置它,但也许你可以在加载场景后枚举所有硬币并将 sensor
属性设置为 YES
:
coin.physicsBody.sensor = YES;
这样的事情是我相信你首先需要学习纯Cocos2D然后才使用让你的生活更轻松的工具(例如SpriteBuilder)的原因之一。这是一个很棒的工具,但在某些情况下,您仍然需要了解幕后发生的事情。
<强>2。您将物理与 CGRectIntersectsRect
如果您使用物理引擎,则需要通过 collision delegate 检测碰撞而不是通过检查 update:
中的 CGRectIntersectsRect
来实现。
很难用几句话解释如何做到这一点,所以这里有一个很好的 tutorial展示了如何在 Cocos2D v3 中检测碰撞,当然,my book 中有关于此的章节。 。
顺便说一句,在操裁剪理节点时,根本不应该使用 update:
,而是使用 fixedUpdate:
。
希望这能帮助您解决问题。
关于ios - 有时 Sprite 在接触另一个 Sprite 时会被推开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850464/
在我的 iOS 应用程序中,我使用多个 UIView,其中一次仅显示 1 个。通过按钮我可以在这些 View 之间切换。 显示新的: self.viewPage2.frame = CGRectMake
我有这个问题,我的 Bootstrap 菜单将另一个名为“title”的 div 向下推(在移动设备上,xs)到目前为止网站链接:http://20162.hosts.ma-cloud.nl/port
我花了很长时间试图让它工作。 我有一个名为“RightExtra”的部分和一个名为“RightExtraContent”的 div。我正在努力使这两个 div 可以在窗口调整到某个点时自由移动,而不会
我有一个按钮列表。当我按下按钮时, View 应该以向下的方式滑出按钮,如下所示: 开始: 中途: 结束: 我该怎么做呢?应该滑出的 View 比按钮大,所以首先将 View 隐藏在按钮后面,然后向下
尝试在一个页面上显示 20 strip 有详细信息的消息。详细信息是固定的。该消息可以从无到大约 240 个字符不等。想要显示消息的第一部分,然后在悬停时显示其余部分。 我可以很好地做到这一点,但是当
所以我有一个 div : .col-4 { width:300px; height:400px; margin-bottom:20px; } 还有一些文字背景图片: .head
我是一名优秀的程序员,十分优秀!