/ Published in: ActionScript 3
Make a DisplayObject3D Object look to a position defined by a Number3D (with ease)
Expand |
Embed | Plain Text
public function lookTo(do3d : DisplayObject3D, ray : Number3D) : void { var ease : Number = 0.1; var mainPosition : Number3D = new Number3D(do3d.x, do3d.y, do3d.z); var dir : Number3D = Number3D.sub(ray, mainPosition); // 指向ray dir.normalize(); var front : Number3D = new Number3D(do3d.transform.n13, do3d.transform.n23, do3d.transform.n33); front.normalize(); var cross : Number3D = Number3D.cross(dir, front); var dot : Number = Number3D.dot(front, dir); var angle : Number = Math.acos(dot); var targetQuat : Quaternion = Quaternion.createFromAxisAngle(cross.x, cross.y, cross.z, angle * ease); do3d.transform.calculateMultiply3x3(targetQuat.matrix, do3d.transform); }
You need to login to post a comment.
