当前位置:网站首页>Laya中关于摄像机跟随人物移动或者点击人物碰撞器触发事件的Demo
Laya中关于摄像机跟随人物移动或者点击人物碰撞器触发事件的Demo
2022-08-03 08:08:00 【charlsdm】
下边附上摄像机跟随人物移动,点击人物之后触发事件的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;
}
}
边栏推荐
猜你喜欢
随机推荐
线性表
Eject stubborn hard drives with diskpart's offline command
行业洞察 | 如何更好的实现与虚拟人的互动体验?
Guava的Service
“==”和equals的区别
解决移动端有纵向滚动条但是不能滚动的问题
pyspark---encode the suuid interval (based on the number of exposures and clicks)
thop 使用心得
DeFi明斯基时刻:压力测试与启示
Pop Harmony Basics Big Notes
volta管理node版本
内存模型之可见性
内存模型之有序性
redis AOF持久化个人理解
数据监控平台
MySQL or使索引失效
greenplum role /user 管理
mysql系统变量与状态变量
面试介绍项目经验(转)
PowerShell:执行 Install-Module 时,不能从 URI 下载