当前位置: 首页> 游戏> 游戏 > COCOS:(飞机大战03)绑定触摸方法,控制主角的移动和移动边界的限制

COCOS:(飞机大战03)绑定触摸方法,控制主角的移动和移动边界的限制

时间:2025/7/11 14:16:50来源:https://blog.csdn.net/qq_40745143/article/details/142094236 浏览次数:0次

飞机大战知识点总结

1.创建Player.ts文件,把该文件添加到Player组件上
在这里插入图片描述
2.编写Player.ts

import { _decorator, Component, EventTouch, Input, input, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Player')
export class Player extends Component {protected onLoad(): void {// 1. 注册触摸事件input.on(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);}protected onDestroy(): void {// 2.注销触摸事件input.off(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);}// 触摸方法onTouchMove(event:EventTouch){// this.node.position:获取自身Player的位置// event中 getDeltaX(),getDeltaY():用来获取移动过程中的位置偏移// 通过这个偏移,来控制Player的位置偏移// this.node.setPosition:设置x,y,z轴的位置 const p = this.node.position;this.node.setPosition(p.x+event.getDeltaX(),p.y+event.getDeltaY(),p.z)}
}

上述代码保存在编辑器里运行看下效果,会发现飞机会移动到视图外边,

下边就要限制移动边界的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过触摸移动,得到了4个边界值,x轴为-230230,y轴为380-380
有个了这个边界值,需要再把Player.ts优化下代码。

import { _decorator, Component, EventTouch, Input, input, Node, Vec3 } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('Player')
export class Player extends Component {protected onLoad(): void {// 1. 注册触摸事件input.on(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);}protected onDestroy(): void {// 2.注销触摸事件input.off(Input.EventType.TOUCH_MOVE,this.onTouchMove,this);}// 触摸方法onTouchMove(event:EventTouch){// this.node.position:获取自身Player的位置// event中 getDeltaX(),getDeltaY():用来获取移动过程中的位置偏移// 通过这个偏移,来控制Player的位置偏移// this.node.setPosition:设置x,y,z轴的位置 const p = this.node.position;// 要移动的:目标坐标let targetPos = new Vec3(p.x+event.getDeltaX(),p.y+event.getDeltaY(),p.z);if(targetPos.x < -230){targetPos.x = -230}if(targetPos.x > 230){targetPos.x = 230}if(targetPos.y < -380){targetPos.y = -380}if(targetPos.y > 380){targetPos.y = 380}this.node.setPosition(targetPos)}
}
关键字:COCOS:(飞机大战03)绑定触摸方法,控制主角的移动和移动边界的限制

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: