当前位置:网站首页>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;
}
}
边栏推荐
- timestamp
- The Transformer, BERT, GPT paper intensive reading notes
- ArcEngine (4) Use of MapControl_OnMouseDown
- ArcEngine(一)加载矢量数据
- frp: open source intranet penetration tool
- ArcEngine(六)用tool工具实现拉框放大缩小和平移
- Pyspark - an empty string is replaced by None
- Karatsuba大数乘法的Verilog实现
- Docker starts mysql
- Qt5开发从入门到精通——第二篇(控件篇)
猜你喜欢
随机推荐
pyspark @udf loop using variable problem
ArcEngine(八)用IWorkspaceFactory加载矢量数据
IDEA的database使用教程(使用mysql数据库)
获取JDcookie的方法
ArcEngine(三)通过MapControl控件实现放大缩小全图漫游
WPF 学习笔记《WPF样式基础》
服务器资源监控工具-nmon、nmon_analyser
How does Mysql query two data tables for the same fields in two tables at the same time
跨域嵌套传递信息(iframe)
HCIP练习02(OSPF)
进程的创建
Logic Pro X自带音色库列表
Transformer、BERT、GPT 论文精读笔记
推荐系统-排序层-精排模型:LR、GBDT、Wide&Deep、DCN、DIN、DIEN、MMOE、PLE
Taro框架-微信小程序-内嵌h5页面
推荐系统-排序层-模型:Wide&Deep
Taro框架-微信小程序-调用微信支付
mysql的innodb存储引擎和myisam存储引擎的区别
ArcEngine (six) use the tool tool to realize the zoom in, zoom out and translation of the pull box
《剑指Offer》刷题之打印从1到最大的n位数