2013-11-22 73 views
0

你好點,AS3移動和旋轉物體在三維空間

我試圖移動在舞臺的3D目的(我使用的Away3D框架),以在空間中的點(矢量3D),它的優良和工作,但我希望這個對象把它變成「前臉」,所以它會一直「看」和「走路」到它。

是移動對象的代碼:

Tweener.addTween(
    mainReference.carHolder, 
    { 
    time:.1, 
    x:points[point].x, 
    y:points[point].y, 
    z:points[point].z, 
    transition:"Linear", 
    onComplete:function():void 
    { 
     moveCar(point + 1); 
    } 
    }); 

我已經嘗試:

var angleX:Number = Vector3D.angleBetween(
    new Vector3D(
    mainReference.carHolder.x, 
    mainReference.carHolder.y, 
    mainReference.carHolder.z), 
    new Vector3D(
    mainReference.carHolder.x, 
    points[point].y, 
    points[point].z) 
) * 180/Math.PI; 

var angleY:Number = Vector3D.angleBetween(
    new Vector3D(
    mainReference.carHolder.x, 
    mainReference.carHolder.y, 
    mainReference.carHolder.z), 
    new Vector3D(
    points[point].x, 
    mainReference.carHolder.y, 
    points[point].z) 
) * 180/Math.PI; 

var angleZ:Number = Vector3D.angleBetween(
    new Vector3D(
    mainReference.carHolder.x, 
    mainReference.carHolder.y, 
    mainReference.carHolder.z), 
    new Vector3D(
    points[point].x, 
    points[point].y, 
    mainReference.carHolder.z) 
) * 180/Math.PI; 

var angle:Number = Vector3D.angleBetween(
    new Vector3D(
    mainReference.carHolder.x, 
    mainReference.carHolder.y, 
    mainReference.carHolder.z), 
    new Vector3D(
    points[point].x, 
    points[point].y, 
    points[point].z) 
)/180 * Math.PI; 

mainReference.carHolder.eulers = new Vector3D(
    points[point].x, 
    points[point].y, 
    points[point].z); 
mainReference.carHolder.rotateTo(
    points[point].x, 
    points[point].y, 
    points[point].z); 

回答

0

您是否試過lookAt()方法?

從文檔:


的lookAt()
公共功能的lookAt(目標:的Vector3D,upAxis:的Vector3D = NULL):無效 繞3D對象面對相對定義的點到父ObjectContainer3D的本地座標。

參數

目標:Vector3D - 一個限定點的矢量被看着

upAxis:的Vector3D(缺省值= null) - 用於後定義三維對象的期望向上取向的可選矢量已發生旋轉


這應該允許您在旅行時讓目標位置看目標位置。

+0

非常感謝,它工作得很好! –