我有很多在3D空间中排列的精灵,它们的父容器已经被旋转。
如何逆转精灵的3D旋转,使它们始终面向相机(Actionscript 3)?
以下是测试代码:
package{
import flash.display.Sprite;
import flash.events.Event;
public class test extends Sprite{
var canvas:Sprite = new Sprite();
var sprites:Array = []
public function test(){
addChild(canvas)
for (var i:int=0;i<20;i++){
var sp:Sprite = new Sprite();
canvas.addChild(sp);
sp.graphics.beginFill(0xFF0000);
sp.graphics.drawCircle(0,0,4);
sp.x = Math.random()*400-200;
sp.y = Math.random()*400-200;
sp.z = Math.random()*400-200;
sprites.push(sp);
}
addEventListener(Event.ENTER_FRAME,function():void{
canvas.rotationX++;
canvas.rotationY = canvas.rotationY+Math.random()*2;
canvas.rotationZ++;
for (var i:int=0;i<20;i++){
//this is not working...
sprites[i].rotationX = -canvas.rotationX
sprites[i].rotationY = -canvas.rotationY
sprites[i].rotationZ = -canvas.rotationZ
}
})
}
}
}
我猜想我需要对精灵的rotation3D矩阵进行一些魔法操作... 我尝试实现了这个脚本:http://ughzoid.wordpress.com/2011/02/03/papervision3d-sprite3d/,但没有成功。 谢谢帮助。
view · t_1 · t_2 · t_3 …
。这是您的“全局”转换矩阵。现在,如果您想在此转换链中绘制某个对象,但使其面向相机,则需要采取该复合矩阵并按我所描述的方式进行更改。实际上,这只是将对象在视图中正确位置上平移而不使其远离“相机”。 - datenwolf