Laya中关于摄像机跟随人物移动或者点击人物碰撞器触发事件的Demo

下边附上摄像机跟随人物移动,点击人物之后触发事件的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;

    }
}

猜你喜欢

转载自blog.csdn.net/charlsdm/article/details/126020635