1
私のゲーム内には、ベクトル配列のヒットボックスがあります。私のローテーションマトリックスが機能しないのはなぜですか?
自分のエンティティの1つがゆっくりとプレイヤーの動きに追従して回転するので、当然ヒットボックスも回転する必要があります。
各頂点を画面に描画すると、コードが歪んで歪んでしまいます。私のエントリーは64 x 64インチなので、+ 32はオブジェクトの中心を示します。
public void rotateVertices(Vector2[] vertices, double angle) {
double cos = Math.cos(angle);
double sin = Math.sin(angle);
for(int i = 0; i < vertices.length; i++){
Vector2 v = vertices[i];
vertices[i].x = ((v.x - (x + 32)) * cos - (v.y - (y + 32)) * sin) + (x + 32);
vertices[i].y = ((v.x - (x + 32)) * sin + (v.y - (y + 32)) * cos) + (y + 32);
}
}
私のコンストラクタ:ここ
public EnemyTriBall(Handler handler, float x, float y) {
super(handler, x, y, 3, 6);
vertices[0] = new Vector2(x + 25, y + 13);
vertices[1] = new Vector2(x + 64, y + 33);
vertices[2] = new Vector2(x + 25, y + 53);
}
私は仕事の後でこれを試してみますが、これは戻ってきてくれていることを想像しています。 – Alex
私の頂点はもはや歪んでいませんが、回転した頂点をフレームごとに通過するので、これを修正するために知っていますか? – Alex
@Alex数式にはいくつか問題があるかもしれませんが、デバッグなしで診断するのは少し難しいです。私は既知の入力と出力のためのいくつかの単体テストを書いて、何が間違っているかを調べるでしょう。これは難しいことではありません。 – lexicore