返回顶部
首页 > 资讯 > 精选 >如何在CocosCreator中使用游戏手柄
  • 680
分享到

如何在CocosCreator中使用游戏手柄

2023-06-14 13:06:28 680人浏览 薄情痞子
摘要

这篇文章主要介绍了如何在CocosCreator中使用游戏手柄,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.场景布置2. 添加手柄监听器1.监听事件的变化由原先的mous

这篇文章主要介绍了如何在CocosCreator中使用游戏手柄,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1.场景布置

如何在CocosCreator中使用游戏手柄

如何在CocosCreator中使用游戏手柄

2. 添加手柄监听器

1.监听事件的变化

由原先的mouse系列的转换为touch系列的

如何在CocosCreator中使用游戏手柄

  1. touchstart 触摸按下,相当于 mousedown

  2. touchmove 触摸移动,相当于 mousemove

  3. touchend 触摸抬起,相当于 mouseup

  4. touchcancel 触摸取消,被其他事件终止,相当于按下了ESC键

2.坐标设定

当触摸按下随推动位置变化(要用世界坐标转换),触摸抬起后回归原位(直接设定0,0坐标默认相对坐标)。
setPosition()设定的为相对父节点的坐标

  onTouchMove(e:cc.Event.EventTouch){         // e.getLocation() 为点击的位置,是世界坐标        // 需要把世界坐标转换为本地坐标                let parent=this.node.parent;// 父节点 (圆形底盘)        let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation());        this.node.setPosition(pos);    }    onTouchCancel(){      this.node.setPosition(cc.v3(0,0,0));    }

如何在CocosCreator中使用游戏手柄

3. 将手柄限制在托盘内

使用方位角来定位边缘位置。pos.nORMalize()方法返回该点相对于(0,0)的(cos, sin),返回Vec2对象。

let parent=this.node.parent;// 父节点 (圆形底盘)let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation());// 该点所在的方位 (cos, sin)let direction:cc.Vec2=pos.normalize();// 限制在边界之内let maxR = 100-20;   //点击的点到托盘中央的距离let r : number = cc.Vec2.distance(pos, cc.v2(0,0));if( r > maxR){pos.x = maxR * direction.x; pos.y = maxR * direction.y;}// cc.log("相对位置: " + pos.x + ", " + pos.y);this.node.setPosition( pos);

如何在CocosCreator中使用游戏手柄

3. 添加小车的控制

1. 小车的旋转

cc.Node.angle
表示旋转的角度,逆时针为正
官方建议不要使用 cc.Node.rotationa.signAngle( b)
a和b为两个向量,返回值是一a,b的夹角 (弧度值)
radian = a.signAngle(b)
(1) a位于b的顺时针方向:角度为正
(2) a位于b的逆时针方向:角度为负

旋转实现:
添加属性 car :cc.Node=null;获取小车节点。
cc.find()注意参数用"/"除号的斜杠,否则识别不到

onLoad () {     this.car=cc.find("canvas/小车");}
let radian=pos.signAngle(cc.v2(1,0));//计算点击位置与水平的夹角let ang=radian/Math.PI*180;//弧度制转换为角度值this.car.angle=-ang;//逆时针为正,所以这里要调整至顺时针

如何在CocosCreator中使用游戏手柄

2. 小车的移动 .

  1. 在小车的脚本中添加前进的动画,update(dt)方法中让x和y每帧加对应的速度在x和y轴的分量。

  2. 在手柄控制脚本中获取小车节点下的脚本。通过上面获取的direction的方向角,传入小车脚本中。通过控制direction来控制小车的移动。

小车运动脚本

direction: cc.Vec2 = null;speed: number = 3;onLoad() {}start() {}update(dt) {if (this.direction == null) return; //静止let dx = this.speed * this.direction.x;let dy = this.speed * this.direction.y;let pos = this.node.getPosition();pos.x += dx;pos.y += dy;this.node.setPosition(pos);}

手柄控制脚本

car: cc.Node = null;carscript: cc.Component = null;// LIFE-CYCLE CALLBACKS:onLoad() {this.car = cc.find("Canvas/小车");this.carscript = this.car.getComponent("CarMove");}start() {this.node.on('touchstart', this.onTouchStart, this);this.node.on('touchmove', this.onTouchMove, this);this.node.on('touchend', this.onTouchCancel, this);this.node.on('touchcancel', this.onTouchCancel, this);}onTouchStart() {}onTouchMove(e: cc.Event.EventTouch) {// e.getLocation() 为点击的位置,是世界坐标// 需要把世界坐标转换为本地坐标// let parent=this.node.parent;// 父节点 (圆形底盘)// let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation());// this.node.setPosition(pos);let parent = this.node.parent; // 父节点 (圆形底盘)let pos: cc.Vec2 = parent.convertToNodeSpaceAR(e.getLocation());// 该点所在的方位 (cos, sin)let direction: cc.Vec2 = pos.normalize();// 限制在边界之内let maxR = 100 - 20;let r: number = cc.Vec2.distance(pos, cc.v2(0, 0));if (r > maxR) {pos.x = maxR * direction.x;pos.y = maxR * direction.y;}// cc.log("相对位置: " + pos.x + ", " + pos.y);this.node.setPosition(pos);let radian = pos.signAngle(cc.v2(1, 0)); //计算点击位置与水平的夹角let ang = radian / Math.PI * 180; //弧度制转换为角度值this.car.angle = -ang; //逆时针为正,所以这里要调整至顺时针this.carscript.direction = direction;}onTouchCancel() {this.node.setPosition(cc.v3(0, 0, 0));//将方向置空,使汽车停止this.carscript.direction = null;}// update (dt) {}

最终效果

如何在CocosCreator中使用游戏手柄

感谢你能够认真阅读完这篇文章,希望小编分享的“如何在CocosCreator中使用游戏手柄”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: 如何在CocosCreator中使用游戏手柄

本文链接: https://lsjlt.com/news/271067.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在CocosCreator中使用游戏手柄
    这篇文章主要介绍了如何在CocosCreator中使用游戏手柄,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.场景布置2. 添加手柄监听器1.监听事件的变化由原先的mous...
    99+
    2023-06-14
  • 怎样在CocosCreator中使用游戏手柄
    目录一.场景布置二. 添加手柄监听器1.监听事件的变化2.坐标设定3. 将手柄限制在托盘内三. 添加小车的控制1. 小车的旋转2. 小车的移动一.场景布置 二. 添加手柄监听器 ...
    99+
    2024-04-02
  • 游戏开发中如何使用CocosCreator进行音效处理
    目录一、 Cocos Creator 中音频播放基础1. 基础知识2. 常用方法二、 Cocos Creator 音效管理组件封装1.创建音效管理类 SoundMgr.ts2. 在初...
    99+
    2024-04-02
  • 如何用CocosCreator实现射击小游戏
    分析下制作步骤: 1. 准备好资源,搭建场景 资源的话可以自己到网上找,也可以直接用我的也行;创建好相应文件夹,把资源放到res文件夹下; 搭建场景: 第一步:创建一个单色精灵(Sc...
    99+
    2024-04-02
  • 如何用CocosCreator制作微信小游戏
    目录1、在微信公众平台下载微信开发者工具2、cocoscreator设置3、配置构建发布4、打开小程序项目5、进入微信开发工具 6、编译7、预览8、预览成功CocosCre...
    99+
    2024-04-02
  • 怎么使用CocosCreator实现射击小游戏
    这篇文章主要介绍怎么使用CocosCreator实现射击小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!分析下制作步骤:1. 准备好资源,搭建场景资源的话可以自己到网上找,也可以直接用我的也行;创建好相应文件夹,...
    99+
    2023-06-14
  • 如何在CocosCreator中使用http和WebSocket
    目录一、HttpGET二、HTTPPOST三、WebSocket四、移植Egret的http和websocket到cocosCocosCreator版本2.3.4 一、HttpGET...
    99+
    2024-04-02
  • 如何在CocosCreator中使用JSZip压缩
    CocosCreator版本:2.4.2 jszip的实际项目应用 游戏中有大量配置的情况下,文件会变得非常大,所以有些游戏会采用zip包压缩解压 例如如下游戏,将游戏配置confi...
    99+
    2024-04-02
  • 如何在Unity中使用VR暴风魔镜蓝牙手柄
    目录一、蓝牙手柄按键的响应二、UGUI的事件检测一、蓝牙手柄按键的响应 在暴风魔镜的官网下载了最新的SDK后导入Unity项目,发现SDK中的DEMO全部是非手柄控制的,然后只能参照...
    99+
    2024-04-02
  • 使用CocosCreator怎么制作一个微信小游戏
    使用CocosCreator怎么制作一个微信小游戏?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、在微信公众平台下载微信开发者工具 地址: http...
    99+
    2023-06-14
  • 如何用云服务器玩游戏手机端游戏
    用云服务器玩游戏可以是一个流行的游戏体验,但是需要注意以下几点: 网络速度:如果您使用的是公共云服务器,您的手机连接到您选择的服务器,并下载和运行游戏。但是,您可能需要确保您的网络速度足够快,以防止游戏无法连接到您的网络。 数据保存:如...
    99+
    2023-10-26
    玩游戏 如何用 服务器
  • 如何在CocosCreator中做一个List
    CocosCreator版本:2.3.4 cocos没有List组件,所以要自己写。从cocos的example项目中找到assets/case/02_ui/05_listView的...
    99+
    2024-04-02
  • 如何使用CocosCreator对象池
    目录前言:具体操作第一步:准备好 Prefab第二步:初始化对象池第三步:从对象池请求对象第四步:将对象返回对象池第五步:使用组件来处理回收和复用的事件第六步:清除对象池前言: 在运...
    99+
    2024-04-02
  • 怎么在CocosCreator中使用http和WebSocket
    这篇文章主要介绍了怎么在CocosCreator中使用http和WebSocket,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CocosCreator版本2.3.4一、Ht...
    99+
    2023-06-14
  • Win7游戏管理器的使用让第三方游戏在游戏管理器中显示
      提起Win7的游戏管理器,可以将众多的游戏集成到一个窗口中且能完整地显示每个游戏的详细信息,因此非常方便我们从中选择自己喜欢的游戏来玩。但美中不足的是,Windows7游戏管理器只支持显示微软自己开发的某些游戏(如&...
    99+
    2023-06-02
    win7 游戏管理器 使用 游戏 管理器 Win7
  • 如何在java中使用ArrayList实现一个斗地主游戏
    本篇文章为大家展示了如何在java中使用ArrayList实现一个斗地主游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 准备牌每张扑克牌牌由花色和数字两部分组成。可以使用花色集合与数字集合嵌...
    99+
    2023-06-06
  • 如何用云服务器玩游戏手机
    用云服务器玩游戏是指将云服务器中的游戏应用程序托管到本地的服务器上,然后在游戏客户端上运行它们。以下是一些可能有用的步骤: 选择您想要在云服务器上运行的游戏。有一些流行的云服务器提供免费和付费的游戏,您可以选择适合您的游戏,并根据您所选...
    99+
    2023-10-26
    玩游戏 如何用 服务器
  • 如何使用阿里云手机搭建游戏服务器
    在现代社会,手机已经成为了我们日常生活中不可或缺的一部分。我们不仅可以用它来沟通,也可以用它来娱乐。随着科技的发展,手机游戏也越来越受欢迎,越来越多的游戏开发者开始利用手机平台进行游戏开发。那么,如何使用阿里云手机搭建游戏服务器呢?本文将详...
    99+
    2023-11-15
    阿里 如何使用 服务器
  • 如何在PHP中实现游戏开发
    随着互联网的迅猛发展,游戏开发已经成为了一个全新的行业,吸引越来越多的开发者前来尝试。游戏开发所需的技能包括图形处理、物理处理、游戏逻辑和网络通信等,在这些技能中,编程技能是不可或缺的一部分。PHP作为一种流行的编程语言,虽然被认为主要用于...
    99+
    2023-05-21
    PHP 实现 游戏开发
  • 如何在 2d 游戏中处理全屏?
    大家好,我们又见面了啊~本文《如何在 2d 游戏中处理全屏?》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下...
    99+
    2024-04-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作