0
2DでスイングするAxのための小さなスクリプトがあります。ただ、ここではこの1例のように:ユニティ2Dコードを3Dに変換する
私の問題は、私は3Dに2Dコードを変換する方法がわからないこと、です。私のオブジェクトにはRigidbodyとHinge Joint(スイング物理学用)が付属しています。
Rigidbody.angularVelocity
は、float値の代わりにVector3を取得する必要があります。
マイコード:
Rigidbody rigid;
float rangeToPush = 0.3f;
float velocity = 120;
private void Start()
{
rigid = GetComponent<Rigidbody>();
rigid.angularVelocity = Vector3.down * velocity;
}
private void Update()
{
if (transform.rotation.z > 0 &&
transform.rotation.z < -rangeToPush &&
rigid.angularVelocity.magnitude > 0 &&
rigid.angularVelocity.magnitude < velocity)
{
rigid.angularVelocity = Vector3.down * velocity;
}
else if (transform.rotation.z < 0 &&
transform.rotation.z > rangeToPush &&
rigid.angularVelocity.magnitude < 0 &&
rigid.angularVelocity.magnitude > -120)
{
rigid.angularVelocity = Vector3.down * -velocity;
}
}
不足している事が明らかに
data.Rigid.angularVelocity = ?Vector3?
代わりに私のfloat値の
と私の二文があれば間違っている、私が持っている最後の
if(/* the other statements .. && */ data.Rigid.angularVelocity > 0 && data.Rigid.angularVelocity < data.RigidVelocity)
の値です
と3Dに変換する必要があります。
ありがとうございました!
編集:私は
data.Rigid.angularVelocity = Vector3.down * data.RigidVelocity;
を使用しようと私のif文
Rigid.angularVelocity.magnitude
が、これは限られた時間のためのつもりスイング、無限ではないため。だから多分データスクリプトの値を変更しなければならないか、大きさの代わりに何か他のものを使う必要があります...私は知らない
私はちょうどアニメーションでそれをアニメーションやスクリプトとAnimationCurveで動くでしょう。.. – mgear
はい、私はちょうどそれをアニメーション化について考えました。しかし、私はスクリプティングでうまくいくので、私は尋ねました。 – Garzec
フラットプレーンx/yまたはy/zを選んでその方法を実装し、左上軸を無視します。または2次元のものを保持し、それを表示せずに3Dオブジェクトに変換をパイプします(おそらく非効率的です) – namar0x0309