2017-08-01 35 views
1

私はVector3.Lerp()を使用して、ある一定の距離でいくつかのプレハブをインスタンス化しています。これは動作しますが、私はちょうどVector3.Slerpで遊んで始めました。Vector3.Slerpで円弧軸を制御する

これはいいアークを作りますが、私はアークがYではなくX軸またはZ軸のいずれかで起こるようにしたいと思います。空気中にアークアップするよりも、プレハブは地面に接触したままです回。

私はeuler local transformsを読んできましたが、それが正しいのかどうかは完全にはわかりません。

誰かがアドバイスやご意見をお寄せいただければ幸いです。

+0

代わりに、あなたのために[RotateAround()](https://docs.unity3d.com/ScriptReference/Transform.RotateAround.html)オプションを使用していますか? – ryeMoss

+0

ありがとう、ありがとう。 – Tony

答えて

2

私はちょっとしたことをしました(そして今のように推論を完全に理解することはできませんが、これが唯一の解決策であるかどうかを完全に理解することはできません)が、開始および終了入力Slerp Vectorsのy成分オブジェクトがxz平面内を移動するだけです。以下の例は以下のとおりです。

Vector3 startpos; 
Vector3 endpos; 
Vector3 yoffset; 
float t; 

void Start() 
{ 
    startpos = new Vector3(-5, 2, 0); 
    endpos = new Vector3(3, 2, 2); 
    yoffset = new Vector3(0, 2, 0); 
} 


void Update() 
{ 
    t = (t+Time.deltaTime); 
    transform.position = Vector3.Slerp(startpos - yoffset, endpos - yoffset, t/5f); 
    transform.position += yoffset; 
} 
+0

あなたは何を知っていますか、私はそれがどのように動作するのか全く分かりませんが、それはあります。ありがとう!私はSlerpがちょうどそれを制御するためにどこかに過負荷を掛かっていることを期待していましたが、これは仕事をするようです。私はもう少しそれと遊ぶだろう。 – Tony

+1

これは、slerpがvector3の開始点と終了点をポイントとして扱い、それらの間を補間しているわけではないと考えています。ベクトルとして扱い、角度と大きさを補間しているからです。 0のy成分を持つベクトルがある場合、それらの間の角度補間は常にxz平面上にあります。そうでない場合は、開始と終了のy成分が同じであっても、保証はありません。 –

関連する問題