AS3移动并将对象旋转到3D空间中的某个点

时间:2013-11-22 16:28:12

标签: actionscript-3 math 3d away3d

您好

我试图将舞台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);

1 个答案:

答案 0 :(得分:0)

您是否尝试过lookAt()方法?

来自文档:


<强>的lookAt()
public function lookAt(target:Vector3D,upAxis:Vector3D = null):void 旋转3d对象以面向相对于父ObjectContainer3D的本地坐标定义的点。

参数

target:Vector3D - 定义要查看的点的向量

upAxis:Vector3D(默认= null) - 用于在旋转发生后定义所需的3d对象向上方向的可选向量


这应该允许您在旅行时让对象看目标位置。