Quaternion.Slerpや、Quaternion.RotateTowardsといった、時間をかけながら変化していく挙動がうまくいきません。
(Vector3.SmoothDampも同様に)
チュッパチャプスのような棒を、実際にはマウスでドラッグして傾けるのですが、
実際に動かす前に、チュートリアル的なもの(10秒間)を入れようとしてまして、
10秒間の内の残り時間を頼りに、棒を順に青玉方向に傾けるようにしています。
最初(6秒をきったとき)はうまくいくのですが、
それ以降が、どんどんおかしくなってしまいます。
具体的にどうおかしいかというと、
・だんだん、×1/2、×1/4…と(見た感じです)、移動距離が短くなっていく。
・移動方向はあっているように見受けられます
・私がいつもこのような関数(Quaternion.Slerp、Vector3.SmoothDampをつかうと、上記のような挙動が毎回みうけられます。
・エラーはない(ので原因がわからない)
書き方がおかしいのでしょうか。
調べてもよくわからなかったので、どなたか教えて頂けないでしょうか?
float speed = 10f; float step = speed * Time.deltaTime; if(timer.GetTimeRemaining() <= 6){ //残り時間が6秒の時 stickObj.transform.rotation = Quaternion.Slerp(currentRotate, Quaternion.Euler(23.925f, -9.464f, -42.68f), step); } if(timer.GetTimeRemaining() <= 5){ //残り時間が5秒の時 stickObj.transform.rotation = Quaternion.Slerp(currentRotate, Quaternion.Euler(-27.022f, 6.222f, -25.491f), step); } if(timer.GetTimeRemaining() <= 4){ //残り時間が4秒の時 stickObj.transform.rotation = Quaterion.Slerp(stickObj.transform.rotation, Quaternion.Euler(16.649f, -2.316f, -15.728f), step); } if(timer.GetTimeRemaining() <= 3){ //残り時間が3秒の時 stickObj.transform.rotation = Quaternion.Slerp(stickObj.transform.rotation, Quaternion.Euler(-5.251f, -1.979f, 41.271f), step); } if(timer.GetTimeRemaining() <= 2){ //残り時間が2秒の時 stickObj.transform.rotation = Quaternion.Slerp(stickObj.transform.rotation, Quaternion.Euler(-13.946f, -2.336f, 18.93f), step); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 01:34
2018/07/27 01:36