これは解決するのが簡単な問題のように思えますが、私にはできません。タイトルが示すように、スプライトの向きが左か右かに応じて、スプライトを別のテクスチャに変更する必要があります。これが私がやろうとしたことです:
if (self.sprite.position.x > 0) //also tried "self.sprite.position.x" instead of 0.
{
[self.sprite setTexture:[SKTexture textureWithImageNamed:@"X"]];
}
if (self.sprite.position.x < 0)
{
[self.sprite setTexture:[SKTexture textureWithImageNamed:@"XX"]];
}
どちらも機能しませんでした (スプライトの x 軸 == 0 -_- の場合を除く)。
私はこれを読みました: SpriteKit: Change texture based on direction 役に立たなかった.
編集: すみません、スプライトの動きは 2D 空間では完全にランダムであることを忘れていました。そのために arc4random() を使用します。上がったり下がったりするときのテクスチャの変更は必要ありません。でも左右は必須。
私は何か間違ったことを書いているに違いありません:
if (self.sprite.physicsBody.velocity.dx > 0)
if (self.sprite.physicsBody.velocity.dx < 0)
私のために働いていません。どちらでもない
if (self.sprite.physicsBody.velocity.dx > 5)
if (self.sprite.physicsBody.velocity.dx < -5)
このスプライトの動きをもう一度明確にするために、
-(void)update:(CFTimeInterval)currentTime
方法。これは次のように達成されます。
-(void)update:(CFTimeInterval)currentTime
{
/* Called before each frame is rendered */
if (!spritehMoving)
{
CGFloat fX = [self getRandomNumberBetweenMin:-5 andMax:5];
CGFloat fY = [self getRandomNumberBetweenMin:-5 andMax:7];
int waitDuration = arc4random() %3;
SKAction *moveXTo = [SKAction moveBy:CGVectorMake(fX, fY) duration:1.0];
SKAction *wait = [SKAction waitForDuration:waitDuration];
SKAction *sequence = [SKAction sequence:@[moveXTo, wait]];
[self.sprite runAction:sequence];
}
}