だから私はすべての射影の数学と物事を使って可動カメラを実装しました。AまたはDを押すと、それぞれ左と右に移動するはずですが、それができません。カメラはZ軸上でのみ移動します。それだけでなく、任意の軸で負の数でスケーリングすると、レンダリングしている立方体が反転して奇妙になり、表示するつもりのないものの代わりに前面がカリングされます。この問題は、おそらく、クォータニオン、マトリックス、またはベクトル クラスを github からコピーしたため (およびそれらに接続されている youtube シリーズをフォローしているため) には関係ありません。
左または右に移動するには、次を使用します。
public void input(){
float movAmt = (float)(10 * Time.getDelta());
float rotAmt = (float)(100 * Time.getDelta());
if(Input.getKey(Input.KEY_W)){
move(getForward(), movAmt);
}
if(Input.getKey(Input.KEY_S)){
move(getForward(), -movAmt);
}
if(Input.getKey(Input.KEY_A)){
move(getLeft(), movAmt);
}
if(Input.getKey(Input.KEY_D)){
move(getRight(), movAmt);
}
if(Input.getKey(Input.KEY_UP)){
rotateX(-rotAmt);
}
if(Input.getKey(Input.KEY_DOWN)){
rotateX(rotAmt);
}
if(Input.getKey(Input.KEY_LEFT)){
rotateY(-rotAmt);
}
if(Input.getKey(Input.KEY_RIGHT)){
rotateY(rotAmt);
}
}
public void move(Vector3f dir, float amt){
pos = pos.add(dir.mult(amt));
}
public void rotateY(float angle){
Vector3f Haxis = yAxis.cross(forward);
Haxis.normalize();
forward.rotate(angle, yAxis);
forward.normalize();
up = forward.cross(Haxis);
up.normalize();
}
public void rotateX(float angle){
Vector3f Haxis = yAxis.cross(forward);
Haxis.normalize();
forward.rotate(angle, Haxis);
forward.normalize();
up = forward.cross(Haxis);
up.normalize();
}
public Vector3f getLeft(){
return forward.cross(up).normalize();
}
public Vector3f getRight(){
return up.cross(forward).normalize();
}
問題を見つけるにはどこを見ればよいですか? (通常、プログラム全体を通して)