タッチが開始されたときに実行されるメソッドにタッチ開始のタッチ位置を渡す方法がわかりません。
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
[self schedule:@selector(moveSprite:)];
return TRUE;
}
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
[self unschedule:@selector(moveSprite:)];
}
-(void)moveSprite:(ccTime) delta
{
CGPoint spriteCenter = CGPointMake(player.contentSize.width /2,player.contentSize.height /2);
CGPoint touchPoint; //how to get this touch began?
float distanceX = touchPoint.x - spriteCenter.x;
float distanceY = touchPoint.y - spriteCenter.y;
float angle = atan2f(distanceY,distanceX); // returns angle in radians
player.rotation = angle;
}
[self schedule:@selector:
また、これは移動スプライト メソッドを継続的に呼び出しますか?についても質問があります。タッチを押し続けるとスプライトの位置が変化するので、スプライトを継続的に移動させ、それに応じて回転を変化させたいと考えています。
私の最後の質問は、スプライトをタッチの x 座標に移動することです。ccmoveto を使用すると、velocity を使用してスプライトの速度をゆっくりと上げることはできませんか? タッチしたポイントにスプライトを移動して速度を上げるにはどうすればよいですか? デルタと関係があると思います。