0

以下のコードを使用していますが、コードがビルドされていても、スプライトが画面から消えるのを止めているようには見えません。スプライトが x 座標に沿って画面の端に到達すると停止するように、どのように変更する必要があるか誰か教えてください。

-(void)applyJoystick:(SneakyJoystick *)aJoystick toNode:(CCNode *)tempNode forTimeDelta:(float)deltaTime
{
CGPoint scaledVelocity = ccpMult(aJoystick.velocity, 1024.0f);
CGPoint newPosition = ccp(tempNode.position.x + scaledVelocity.x * deltaTime, tempNode.position.y);
CGSize screenSize = [CCDirector sharedDirector].winSize;
CGFloat spriteWidth = vikingSprite.contentSize.width;
CGFloat x = tempNode.position.x + scaledVelocity.x * deltaTime;
if (x < 0 + (spriteWidth/2)) {
    x = 0 + (spriteWidth/2);
} else if (x > screenSize.width - (spriteWidth/2)) {
    x = screenSize.width - (spriteWidth/2);

}
[tempNode setPosition:newPosition];
if (jumpButton.active == YES) {
    CCLOG(@"Jump button is pressed.");
}
if (attackButton.active == YES) {
    CCLOG(@"Attack button is pressed.");
}
}

ありがとう

4

3 に答える 3

2

変更した変数xを、変更後にvikingspriteに再割り当てすることはありません。

したがって、次のようなことを行う必要があります。

if (x < 0 + (spriteWidth/2)) {
    x = 0 + (spriteWidth/2);
} else if (x > screenSize.width - (spriteWidth/2)) {
    x = screenSize.width - (spriteWidth/2);

}
CGPoint vikingPos = cpp(x, vikingsprite.position.y);
[vikingsprite setPosition:vikingPos];

構文が間違っている可能性がありますObjective-cはあまり記述していませんが、cocos2dのC++バージョンであるcocos2d-xを使用しています

于 2011-10-20T00:27:16.353 に答える
0

エッジを境界として設定します。

 boundary.SetAsEdge(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0));

Ray Wenderlich にビールを送ることを忘れないでください。

于 2011-08-26T15:33:21.033 に答える
0

位置をリセットするのを忘れていると思いますか?

if (x < 0 + (spriteWidth/2)) {
x = 0 + (spriteWidth/2);
tempNode.position.x = x;
} else if (x > screenSize.width - (spriteWidth/2)) {
x = screenSize.width - (spriteWidth/2);
    tempNode.position.x = x;


}
于 2011-08-26T15:37:58.500 に答える