Flash Papervision3D:移动相机时使对象保持静止
我想在移动相机时保持一个对象保持在原来的位置 我正在使用此脚本通过鼠标拖动来动态观察对象。但我想让场景中的一个物体保持静止。我该怎么做 谢谢,Flash Papervision3D:移动相机时使对象保持静止,flash,actionscript-3,papervision3d,Flash,Actionscript 3,Papervision3d,我想在移动相机时保持一个对象保持在原来的位置 我正在使用此脚本通过鼠标拖动来动态观察对象。但我想让场景中的一个物体保持静止。我该怎么做 谢谢, Josh好的,我浏览了Papervision中的Camera3D源代码。以下是orbit的实现: /** * Orbits the camera around the specified target. If no target is specified the * camer
Josh好的,我浏览了Papervision中的Camera3D源代码。以下是orbit的实现:
/**
* Orbits the camera around the specified target. If no target is specified the
* camera's #target property is used. If this camera's #target property equals null
* the camera orbits the origin (0, 0, 0).
*
* @param pitch Rotation around X=axis (looking up or down).
* @param yaw Rotation around Y-axis (looking left or right).
* @param useDegrees Whether to use degrees for pitch and yaw (defaults to 'true').
* @param target An optional target to orbit around.
*/
public override function orbit(pitch:Number, yaw:Number, useDegrees:Boolean=true, target:DisplayObject3D=null):void
{
target = target || _target;
target = target || DisplayObject3D.ZERO;
if(useDegrees)
{
pitch *= (Math.PI/180);
yaw *= (Math.PI/180);
}
// Number3D.sub
var dx :Number = target.world.n14 - this.x;
var dy :Number = target.world.n24 - this.y;
var dz :Number = target.world.n34 - this.z;
// Number3D.modulo
var distance :Number = Math.sqrt(dx*dx+dy*dy+dz*dz);
// Rotations
var rx :Number = Math.cos(yaw) * Math.sin(pitch);
var rz :Number = Math.sin(yaw) * Math.sin(pitch);
var ry :Number = Math.cos(pitch);
// Move to specified location
this.x = target.world.n14 + (rx * distance);
this.y = target.world.n24 + (ry * distance);
this.z = target.world.n34 + (rz * distance);
this.lookAt(target);
}
您可以将其作为要保持静止的对象的辅助函数来实现。我相信这个函数中唯一涉及相机特定的代码是lookAt()函数
然后,您可以将其添加到mouseMove处理程序中的camera.orbit()之前,它应该与您的相机保持静止。静止是什么意思?当你的视野发生变化时,你想让物体保持在你视野中的同一位置吗?@CookieofFault-是的,没错。