摄像机捕捉目标
/* 摄像机捕捉目标 */
export class CameraLookAt extends Laya.Scene3D{ private camera:Laya.Camera; private box:Laya.MeshSprite3D; private capsule:Laya.MeshSprite3D; private cylinder:Laya.MeshSprite3D; private upVector:Laya.Vector3 = new Laya.Vector3(0, 1, 0); private index:number = 0; constructor(){ super(); this.init(); } private init(){ //创建相机,构造函数的三个参数为相机横纵比,近距裁剪,远距裁剪 this.camera = new Laya.Camera(0, 0.1, 100); this.camera.transform.translate(new Laya.Vector3(0, 0.7, 5)); this.camera.transform.rotate(new Laya.Vector3( -15, 0, 0), true, false); this.camera.clearFlag = Laya.CameraClearFlags.SolidColor; //设置摄像机视野范围(角度) this.camera.fieldOfView = 60; this.addChild(this.camera); //添加平行光 let directionLight = new Laya.DirectionLight(); this.addChild(directionLight); //设置平行光颜色 directionLight.color = new Laya.Vector3(1, 1, 1); directionLight.transform.rotate(new Laya.Vector3( -3.14 / 3, 0, 0)); let sprite = new Laya.Sprite3D(); this.addChild(sprite); //正方体 this.box = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createBox(0.5, 0.5, 0.5)); sprite.addChild(this.box); this.box.transform.position = new Laya.Vector3(1.5, 0.0, 2); this.box.transform.rotate(new Laya.Vector3(0, 45, 0), false, false); //胶囊体 this.capsule = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createCapsule(0.25, 1, 10, 20)); this.capsule.transform.position = new Laya.Vector3(-1.5, 0.0, 2); sprite.addChild(this.capsule); //圆柱 this.cylinder = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createCylinder(0.25, 1, 20)); this.cylinder.transform.position = new Laya.Vector3(0.0, 0.0, 2); sprite.addChild(this.cylinder); //创建linnPhong材质 let mat:Laya.BlinnPhongMaterial = new Laya.BlinnPhongMaterial(); this.box.meshRenderer.material = mat; this.capsule.meshRenderer.material = mat; this.cylinder.meshRenderer.material = mat; //为材质加载纹理 Laya.Texture2D.load("res/threeDimen/layabox.png",Laya.Handler.create(this,function(tex):void{ mat.albedoTexture = tex; })) this.loadUI(); } private loadUI() { Laya.loader.load(["res/threeDimen/ui/button.png"], Laya.Handler.create(this, function() { let changeActionButton:Laya.Button = Laya.stage.addChild(new Laya.Button("res/threeDimen/ui/button.png", "切换注视目标")) as Laya.Button; changeActionButton.size(200, 40); changeActionButton.labelBold = true; changeActionButton.labelSize = 30; changeActionButton.sizeGrid = "4,4,4,4"; changeActionButton.scale(Laya.Browser.pixelRatio, Laya.Browser.pixelRatio); changeActionButton.pos(Laya.stage.width / 2 - changeActionButton.width * Laya.Browser.pixelRatio / 2 , Laya.stage.height - 100 * Laya.Browser.pixelRatio); changeActionButton.on(Laya.Event.CLICK, this, function(){ this.index++; if (this.index % 3 === 1){ //摄像机捕捉模型正方体 this.camera.transform.lookAt(this.box.transform.position, this.upVector); }else if (this.index % 3 === 2){ //摄像机捕捉模型圆柱体 this.camera.transform.lookAt(this.cylinder.transform.position, this.upVector); }else{ //摄像机捕捉模型胶囊体 this.camera.transform.lookAt(this.capsule.transform.position, this.upVector); } }); })); } }