下边附上摄像机跟随人物移动,点击人物之后触发事件的Demo
下边附加上Ts的CameraFollow脚本
export default class CameraFollow extends Laya.Script {
private CameraGameObj:Laya.Sprite3D;
private target:Laya.Sprite3D;
public angle:number=30;
public distance:number=25;
public dis:Laya.Vector3=new Laya.Vector3();
private point:Laya.Vector2=new Laya.Vector2();
private camera:Laya.Camera;
private scene:Laya.Scene3D;
private ray:Laya.Ray;
private outHitResult:Laya.HitResult;
constructor() {
super();
console.log("CameraFollowScript开始");
}
public InitMySelfGameObj(scene:Laya.Scene3D,camera:Laya.Camera):void{
this.CameraGameObj=scene.getChildAt(0) as Laya.Sprite3D;
console.log("thisCameraObj:"+this.CameraGameObj.name);
this.target=scene.getChildAt(3) as Laya.Sprite3D;
console.log("thisTargetObj:"+this.target.name);
this.dis.x=this.target.transform.position.x-this.CameraGameObj.transform.position.x;
this.dis.y=this.target.transform.position.y-this.CameraGameObj.transform.position.y;
this.dis.z=this.target.transform.position.z-this.CameraGameObj.transform.position.z;
this.camera=camera;
this.scene=scene;
this.ray=new Laya.Ray(new Laya.Vector3(0,0,0),new Laya.Vector3(0,0,0));
this.outHitResult=new Laya.HitResult();
// Laya.stage.on(Laya.Event.MOUSE_DOWN,this,this.onMouseDown)
}
onMouseDown()
{
this.point.x = Laya.MouseManager.instance.mouseX;
this.point.y = Laya.MouseManager.instance.mouseY;
this.camera.viewportPointToRay(this.point, this.ray);
this.scene.physicsSimulation.rayCast(this.ray,this.outHitResult);
//如果碰撞到物体
if (this.outHitResult.succeeded)
{
//删除碰撞到的物体
this.target.transform.position=new Laya.Vector3(0,20,0);
console.log("碰撞到物体!!")
}
}
onUpdate():void
{
}
onLateUpdate():void
{
let nowPos:Laya.Vector3=new Laya.Vector3();
nowPos.x=this.target.transform.position.x-this.dis.x;
nowPos.y=this.target.transform.position.y-this.dis.y;
nowPos.z=this.target.transform.position.z-this.dis.z;
this.CameraGameObj.transform.position=nowPos;
}
}