Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sprite kit 当连接物理体并施加脉冲时,SKSpriteNode发生振动_Sprite Kit_Game Physics_Skspritenode_Skphysicsbody - Fatal编程技术网

Sprite kit 当连接物理体并施加脉冲时,SKSpriteNode发生振动

Sprite kit 当连接物理体并施加脉冲时,SKSpriteNode发生振动,sprite-kit,game-physics,skspritenode,skphysicsbody,Sprite Kit,Game Physics,Skspritenode,Skphysicsbody,我注意到我的子类SKSpriteNode中有一些非常奇怪的东西,它附加了物理体并对脉冲做出响应 它附加了一个SKPhysicsBody,但当对精灵施加脉冲时,它会在移动过程中振动。这很烦人,看起来很糟糕 这可能是什么原因造成的 以下是设置代码: self.texture = [[SKTextureAtlas atlasNamed:@"karl"]textureNamed:@"karlidle-1"]; self.size = CGSizeMake(69.0, 93.0); se

我注意到我的子类
SKSpriteNode
中有一些非常奇怪的东西,它附加了物理体并对脉冲做出响应

它附加了一个
SKPhysicsBody
,但当对精灵施加脉冲时,它会在移动过程中振动。这很烦人,看起来很糟糕

这可能是什么原因造成的

以下是设置代码:

self.texture = [[SKTextureAtlas atlasNamed:@"karl"]textureNamed:@"karlidle-1"];

    self.size = CGSizeMake(69.0, 93.0);
    self.userInteractionEnabled = NO;
    self.name = @"karl";

    self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(69.0, 93.0)];
    self.physicsBody.dynamic = YES;
    self.physicsBody.allowsRotation = NO;
    self.physicsBody.affectedByGravity = YES;
    self.physicsBody.usesPreciseCollisionDetection = YES;
    self.physicsBody.mass = 1.0;
    self.physicsBody.linearDamping = 0.0;
    self.physicsBody.angularDamping = 0.0;
    self.physicsBody.restitution = 0.3;

    self.physicsBody.categoryBitMask = karlCategory;
    self.physicsBody.collisionBitMask = obstaclesCategory|floorCategory|wallCategory;
    self.physicsBody.contactTestBitMask = obstaclesCategory|floorCategory|wallCategory;
并运用冲动:

 if (self.physicsBody.velocity.dy >= kKarlMaxVelocity) {

        self.physicsBody.velocity = CGVectorMake(0, kKarlMaxVelocity);
    }
    else if (self.physicsBody.velocity.dy <= kKarlLowVelocityBoostThreshold){

        self.physicsBody.velocity = CGVectorMake(0, kKarlVelocityImpulseIncrement*kKarlVelocityBoost);
    }
    else{

        [self.physicsBody applyImpulse:CGVectorMake(0, kKarlVelocityImpulseIncrement)];
        //[self.physicsBody applyForce:CGVectorMake(0, 3000) atPoint:self.frame.origin];
        //self.physicsBody.velocity = CGVectorMake([self returnNormalisedXVelocity], self.physicsBody.velocity.dy);
    }
if(self.physicsBody.velocity.dy>=kKarlMaxVelocity){
self.physicsBody.velocity=CGVectorMake(0,kKarlMaxVelocity);
}

否则如果(self.physicsBody.velocity.dy)你多久应用一次冲动?你多久应用一次冲动?