私はゲーム開発を学び始めています。初心者として、1つの大砲が敵に弾丸を打つ(異なる方向から大砲に向かってくる)1つのデモゲームを作成します。今、私はユーザーが画面や敵に触れるところならどこでも大砲のスプライト画像の回転に固執しました。私のやり方、私の最初のコードは次のとおりです、
void HelloWorld:: ccTouchesBegan(CCSet *touches, CCEvent * event)
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCTouch* touch = (CCTouch*)( touches->anyObject() );
CCPoint location = touch->locationInView(touch->view());
location = CCDirector::sharedDirector()->convertToGL(location);
//Rotate cannon direction toward touch point
CCPoint diffPoint = ccpSub(_cannonImage->getPosition(), location);
float angleRadians = atanf((float)diffPoint.y/(float)diffPoint.x);
float angleOffset = CC_DEGREES_TO_RADIANS(180);
if(diffPoint.x < 0){
angleRadians += angleOffset;
}else{
angleRadians -= angleOffset;
}
CCLog("angle to be rotate = %f", angleRadians);
_cannonImage->runAction(CCRotateBy::actionWithDuration(0.1, angleRadians));
}
コードはcocos2d-xで書かれています。プレーンなcocos2dで書いた人からの回答も受け付けています。
ありがとうiHungry