gpt4 book ai didi

ios - SpriteKit - 多个对象的接触检测

转载 作者:行者123 更新时间:2023-11-29 02:36:26 25 4
gpt4 key购买 nike

我在中间有一个平台,上面有两个圆圈。

顶部的一个圆圈。底部有一个圆圈。

当底部圆圈触及屏幕顶部时,我想写一条 NSLog 消息。

当顶部的圆圈触及屏幕底部时,我想写一条 NSLog 消息。

我已将 circle1 和 2 设置为具有 categorybitmasks 和 contactTestBitMasks。我做的任何测试,我只能找到顶部或底部圆圈何时触及屏幕底部,但无法确定如何检测底部圆圈何时触及顶部。我已经开始了我的 if 语句

-(void)didBeginContact:(SKPhysicsContact *)contact {
// If the top circle touches the bottom edge
if (contact.bodyA.categoryBitMask == bottomEdgeCategory) {
NSLog(@"This is the top ball touching the bottom edge");
}
}

如有任何帮助,我们将不胜感激。

最佳答案

如果您是 Sprite Kit 的新手,请阅读以下有关碰撞检测的教程。

这显示了让一个 Sprite 接触另一个 Sprite 的代码。您要做的就是沿着屏幕顶部创建一个细矩形 Sprite ,并沿着底部创建另一个 Sprite 。为它们分配不同的接触位掩码。使用以下教程中的代码,添加用于点击 topOfScreenSprite 和 BottomOfScreenSprite 的接触事件。

http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners

我喜欢的版本:

- (void)didBeginContact:(SKPhysicsContact *)contact{

SKPhysicsBody *firstBody, *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}

if (firstBody.categoryBitMask==circle1Category && secondBody.categoryBitMask == topOfScreenCategory)
{
NSLog('c1: Top Hit');
}
else if (firstBody.categoryBitMask==circle1Category && secondBody.categoryBitMask == bottomOfScreenCategory)
{
NSLog('c1: Bottom Hit');
}
if (firstBody.categoryBitMask==circle2Category && secondBody.categoryBitMask == topOfScreenCategory)
{
NSLog('c2: Top Hit');
}
else if (firstBody.categoryBitMask==circle2Category && secondBody.categoryBitMask == bottomOfScreenCategory)
{
NSLog('c2: Bottom Hit');
}
}

注意:firstBody 始终是分配有较低值的类别。

关于ios - SpriteKit - 多个对象的接触检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com