私はあなたのホバリング宇宙船を運転する(starwarsからpodracingのような)私のゲームのための方向性のドラッグを作成しようとしています。彼らは通常正面から合理化され、側面からではないので、船体、車などのホバリングのための何らかの意味をなしません。私は物理学にうまくいかないが、私が知っていることからドラッグが速くなるほど速くなる。私はこのスクリプトを書いたが、うまくいきません。力が加えられるとオブジェクトはそれ自身で加速します。オブジェクトの速度を変更して方向性のあるドラッグを作成する方法は?
public Vector3 dragFactor;
private Rigidbody _rb;
void Start() {
_rb = GetComponent<Rigidbody>();
}
void FixedUpdate() {
Vector3 vel = _rb.velocity;
if(vel.x>0)
vel.x -= vel.x * dragFactor.x;
else
vel.x += vel.x * dragFactor.x;
if (vel.y > 0)
vel.y -= vel.y * dragFactor.y;
else
vel.y += vel.y * dragFactor.y;
if (vel.z > 0)
vel.z -= vel.z * dragFactor.z;
else
vel.z += vel.z * dragFactor.z;
_rb.velocity = vel;
}
あなたは何が間違っているのか、何が変更できるのか知っていますか?
rb.velocityを直接操作しないでください。代わりに、あなたは達成しようとしていることに応じて、多かれ少なかれrb.AddForceのために行きます。方向性のあるドラッグの意味が分かりませんので、例を挙げることはできません。 – Absinthe
@Absinthe方向性のドラッグでは、オブジェクトが前方に移動しているときよりもオブジェクトが右側に移動しているときにドラッグが強くなるようにする必要があります。 –
OK、必要な方向に力を加えたいので、ベクトルを正と負に設定します。もしあなたのターゲットrb.AddForce(myNegativeXVector)、そうでなければrb.AddForce(myPositiveXVector) – Absinthe