1

したがって、次のように構築される平面の円があります。

plane.x = Math.cos(angle) * radius;
plane.z = Math.sin(angle) * radius;
plane.rotationY = (-360 / numItems) * i - 90;

これは、平面の総数 (rotationY) に対していくつの角度スライスがあるかを計算し、各平面を半径の円上のその場所に配置します。

次に、私が持っている円の周りの回転を更新します:

var rotateTo:Number = (-360 / numItems) * currentItem + 90;
TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut } );

ご覧のように、飛行機は円を描いており、それぞれが円から 90 度の方向を向いています。私はこれを参照として使用しています - それはほとんどそれです: http://papervision2.com/a-simple-papervision-carousel/

今、私が見つけたいのは、可能であれば、法線なしで常にカメラに面するように、個々の平面の向きをどのように計算できるかということです。plane.LookAt(camera) を試しましたが、うまくいきません。基本的に、すべての平面は、中央でカメラに面している方向を持っている必要があります。

どういうわけか、その例をリンクから変更してそれを行うことはできないと思います。

編集:OK私はそれを書いた後に自分の質問に答えました。書かれた自分の考えを読むのに役立ちます。したがって、平面を個別に方向付けし、それらすべてをグループとして回転させているため、上記のコードでグループのトゥイーンの後に行ったことは、各平面をループして、前方平面の Y 方向に向けることでした。

for (var i:int = 0; i < planes.length; i++) {
    TweenLite.to(planes[i], 1, { rotationY:(-360 / numItems * rotoItem - 90), ease:Quint.easeInOut } );
} 

rotoItem は手前のものです。ケースを閉じました。

4

1 に答える 1

0

OK 書いた後、自分の質問に答えました。書かれた自分の考えを読むのに役立ちます。したがって、平面を個別に方向付けし、それらすべてをグループとして回転させているため、上記のコードでグループのトゥイーンの後に行ったことは、各平面をループして、前方平面の Y 方向に向けることでした。

for (var i:int = 0; i < planes.length; i++) {
    TweenLite.to(planes[i], 1, { rotationY:(-360 / numItems * rotoItem - 90), ease:Quint.easeInOut } );
} 

rotoItem は手前のものです。ケースを閉じました。

于 2010-07-15T00:40:42.530 に答える