私は宇宙船を持っています。その宇宙船は空間を 360 度移動します。
宇宙船には 2D の推力アニメーションが必要です。トラスト アニメーションは、宇宙船の中央下部に配置する必要があります。次の変数があります。
_Rotation
_Spaceship.width
_Spaceship.height
_Spaceship.Position(x,y)
人々が私の悪い説明を理解していない場合に備えて、私の問題の画像もアップロードしました。
どちらのアニメーションも次のようにレンダリングされます。
this._itemAnimation.render(this.getPosition(), canvas, this._degrees);
this._thrustAnimation.render(this.thrustPosition(), canvas, this._degrees);
私はこれまで試してみましたが失敗しました:
_thurstPosition.set(((int)_object_x + Math.cos(_degrees) * _itemAnimation.getWidth() / 2) ,
((int)_object_y + Math.sin(_degrees) * _itemAnimation.getWidth() / 2));
私は失敗しました、誰か助けてください。
- - アップデート - -
コードを更新して、よりよく理解できるようにしました。
int SpaceshipCenterX = getPosition().x + (_SpaceshipAnimation.getWidth() / 2) - (_thrustAnimation.getWidth() / 2);
int SpaceshipCenterY = getPosition().y + ((_SpaceshipAnimation.getHeight() / 2) - (_thrustAnimation.getHeight() / 2));
double OffSetCos = Math.cos(_spaceshipDegrees);
double OffSetSin = Math.sin(_spaceshipDegrees);
_thurstPosition.set
(
(int)(SpaceshipCenterX + (SpaceshipAnimation.getWidth() / 2) * OffSetCos)
,
(int)(SpaceshipCenterY + (SpaceshipAnimation.getHeight() / 2) * OffSetSin)
);
私はまだそれをうまくやり遂げることができません。宇宙船の周りを回っていますが、非常に速く、どこでも点滅しています。
--- 更新 2 ---
これはほとんど機能していますが、行き過ぎています:
int xOffset = -1 * (_itemAnimation.getWidth() / 2);
double DegreeToRadien = Math.toRadians(_degrees);
_thurstPosition.set
(
(int)(((xOffset) * Math.cos(DegreeToRadien)) + getPosition().x),
(int)(((xOffset) * Math.sin(DegreeToRadien)) + getPosition().y)
);