最近プログラムを始めた初心者という前提でお願いいたします。
個人的にcocos2d-xを使ってC++でゲームを作っています。
キャラクターの移動についてわからないことがあります。
Sprite *pPlayer = (Sprite*)this->getChildByTag(1); pPlayer->stopActionByTag(100); auto moveSpeed = 300.0f; auto playerPos = pPlayer->getPosition(); CCLOG("現在位置X = %f , 現在位置Y = %f", playerPos.x, playerPos.y); auto touchPoint = pTouch->getLocation(); CCLOG("目的地X = %f , 目的地 = %f", touchPoint.x, touchPoint.y); auto distance = playerPos.getDistance(touchPoint); CCLOG("距離 = %f", distance); auto moveTime = abs(distance) / moveSpeed; CCLOG("移動時間 = %f", moveTime); auto moveTo = MoveTo::create(moveTime, touchPoint); moveTo->setTag(100); pPlayer->runAction(moveTo);
マップがタッチされると上記のコードが呼ばれるようにしています。
タッチの位置と現在位置の距離を求め、moveToの引数が時間のため、
移動速度が一定になるように、移動時間を計算し移動を行っています。
これで、移動の処理を行えたのですが、
画面のスクロールを実装したところ、
元々画面外だった箇所へ移動の際の挙動がおかしくなってしまいます。
出力して確認してみたところ、
元々画面外だった箇所のタッチ位置がおかしくなってしまっているようでした。
解決法がわからないので
どなたかご教授よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/14 10:29 編集