繁体   English   中英

Sprite Kit - 不允许节点移出屏幕

[英]Sprite Kit - Do not allow node to move out of screen

我正在创建一个游戏,我不希望玩家能够移出屏幕。 该节点跟随玩家移动触摸。 我有“正在建设中”的代码,因此玩家无法在顶部或右侧移出,但我不希望玩家能够在任何一侧移出。

- (void)movementPlayer {
    SKAction * actionMoveX =  [SKAction moveToX:MIN(location2.x - playerPositionX, self.size.width - (_player.size.width/2)) duration:0];

    SKAction * actionMoveY = [SKAction moveToY:MIN(location2.y - playerPositionY, self.size.height - (_player.size.height/2)) duration:0];

        [_player runAction:[SKAction sequence:@[actionMoveX, actionMoveY]]];

}

在您的SKScene

self.physicsBody=[SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsWorld.gravity=CGVectorMake=(0,0);
_player.physicsBody=[SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(10,10)];//example; use bodyWithPolygonFromPath:yourCGPath if player has more complex form, or bodyWithCircleOfRadius:radius if its shape is circle
_player.physicsBody.velocity=CGVectorMake(10,10); //or more then 10,10

祝好运!

您应该创建一个物理世界并在屏幕周围添加边框矩形。 此边框必须具有物理主体,该物理主体设置为与给予播放器节点的物理主体碰撞类别相冲突。 如果玩家节点在边界内启动,则玩家不能离开屏幕并且不需要额外编码(除了为每个物理主体正确设置碰撞类别)

RayWenderlich.com提供了易于理解的游戏教程,展示了如何根据精灵工具包手册处理碰撞。

只需将底部代码添加到您所调用的方法中,它应该阻止所有物理实体离开屏幕! 很有用!

     SKPhysicsBody* gameborderBody = [SKPhysicsBody        bodyWithEdgeLoopFromRect:self.frame];
      // 2 Set physicsBody of scene to borderBody
      self.physicsBody = gameborderBody;
      // 3 Set the friction of that physicsBody to 0
      self.physicsBody.friction = 1.0f;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM