2016-06-24 9 views
3

私はスプライトの中心を見つけようとしています。私はサッカーボールのスプライトを使用し、サイズを120で120に変更しました。 私はタッチ位置を取得できました。Swift 2でSKSpriteNodeの実際の中心を取得するにはどうすればよいですか?

センターを取得する方法は、sprite.origin.x +(sprite.width/2)にする必要がありますが、何らかの理由で、私が得ている値は意味がありません。どこにボールが接触しても、touch.xはSpriteの中心より常に小さくなります。たとえば、ボールの右側をタッチしたとしても、location.xはsprite.centerよりも大きくなければなりません。バツ。

これは、ボールの中心点

let ballCenter = CGVectorMake(ball.position.x + (ball.frame.width/2), 
           ball.position.y + (ball.frame.height/2)) 

を得るために少しのコードである。しかし、私はこのような結果を印刷するとき、常に「真」の場合に起こっています。

if location.x < ballCenter.dx { 
    print("touched on left of ball ", location.x, location.y) 
}else{ 
    print("touched on right of ball ", location.x, location.y) 
} 

これは私を夢中にしています。スプライトの原点は左下にありませんか?

また、なぜシーンフレームが小さいのですか?私はiPhone 6Sを使用しているとき、私の画面の幅は375.0で、画面の高さは667.0です。これはとても混乱しています。

ありがとうございます。

答えて

4

SpriteNodeの原点は、デフォルトでスプライトの中心にあります。ノードの中心を取得する場合は、let ballCenter = sprite.positionを使用してください。これにより、CGPointを使用できます。 ballCenter.xballCenter.yを使用してx座標とy座標にアクセスできます。

ballCenterで現在行っているようなポイントを作成する場合は、CGVectorMake()の代わりにCGPointMake()を使用してください。

+0

あなたは正しいです!どうもありがとう! – msqar

+0

よろしくお願いします! – claassenApps

+0

これを達成する手助けができますか? http://stackoverflow.com/questions/37998343/impulse-skspritenode-depending-on-touched-location-swift-2それは私のナッツを運転しています。ハハはすでに多くのことを試みましたが、私はまだ素晴らしい方法を考え出すことができませんでした。している – msqar

関連する問題