CocosCreator开发之虚拟遥杆制作

这篇具有很好参考价值的文章主要介绍了CocosCreator开发之虚拟遥杆制作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用CocosCreator开发一个类似于王者荣耀/和平精英的虚拟遥杆。如果你们想看看最后效果怎么样的,可以微信搜索 迷宫吧兄弟 小游戏或者扫一下下面二维码,进去游戏界面亲自感受一下效果。

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

 如果感觉还行,那咱们开始上正题。

1.素材准备,下载下面两个遥杆的素材,第一个是背景,第二个是遥杆,你也可以自己去制作。

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

2.创建一个cocos creator工程,在Scene创建遥杆的相关节点,其中JoyStick为空节点,Dish和Pole为Sprite(精灵),如下图所示。

 文章来源地址https://www.toymoban.com/news/detail-743710.html

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

3.将第一步的素材放在cocos creator工程目录下的assets文件夹下目录(该目录你可以创建自己的资源文件夹,建议创建一个Resources文件夹,并且将这些素材都放在这个文件夹内,笔者这里放在assets\Resources\GUI中),放置好后,再回到cocos creator界面中,这个时候软件会刷新,我们再修改这个素材资源为sprite-frame,如下图所示。

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

4.脚本代码如下,很简单就不多解释了。

import { _decorator, Component, Node ,UITransform,Vec3, Touch } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('JoyStick')
export class JoyStick extends Component {

    //盘
    Dish: Node = null;
    //摇杆
    Pole: Node = null;

    start() {
        this.Dish = this.node.getChildByName("Dish");
        this.Pole = this.node.getChildByName("Pole");
        this.node.on(Node.EventType.TOUCH_START, this.onTouchStart, this);
        this.node.on(Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
        this.node.on(Node.EventType.TOUCH_END, this.onTouchEnd, this);
        this.node.on(Node.EventType.TOUCH_CANCEL, this.onTouchCancel, this);
    }

    update(deltaTime: number) {
        // get ratio
        let len = this.Pole.position.length();   // 自身坐标系的坐标
        let uiTransform = this.Dish.getComponent(UITransform);  // 活动范围
        let maxLen = uiTransform.width *0.4;
        let ratio = len / maxLen;
        if (ratio > 1) {
            this.Pole.position.divide(new Vec3(ratio, ratio, 1));
        }

        // 计算单位矢量,及发送
        const arg : Vec3 = this.Pole.getPosition();
    }

    onTouchStart(event) {
        let pos_touch = event.getUILocation();    // 触摸点坐标@UI世界坐标系
        let uiTransform = this.node.getComponent(UITransform);
        let pos_nodeSpace = uiTransform.convertToNodeSpaceAR(new Vec3(pos_touch.x, pos_touch.y, 0));
        
        this.Pole.setPosition(pos_nodeSpace);
    }

    onTouchMove(e: Touch) {
        let pos_touch = e.getUILocation();    // 触摸点坐标@UI世界坐标系
        let uiTransform = this.node.getComponent(UITransform);
        let pos_nodeSpace = uiTransform.convertToNodeSpaceAR(new Vec3(pos_touch.x, pos_touch.y, 0));
        this.Pole.setPosition(pos_nodeSpace);
        
    }

    onTouchEnd(e: Touch) {     
        this.Pole.setPosition(new Vec3(0, 0, 0));
    }

    onTouchCancel(e: Touch) {    
        this.Pole.setPosition(new Vec3(0, 0, 0));
    }
}

 5.JoyStick节点添加自定义脚本,Dish节点添加背景素材,Pole节点添加遥杆素材。

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

cocos creator 虚拟摇杆,CocosCreator开发,cocos2d,游戏引擎,typescript,游戏程序

 到此就完成了虚拟遥杆的制作。

 

到了这里,关于CocosCreator开发之虚拟遥杆制作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cocos Creator3.8 项目实战(二)cocos creator编辑器中绑定事件引发的bug解决

    问题描述: 编辑器里面多个按钮绑定同一个脚本,并配置事件,脚本中有其他消息监听,引起逻辑混乱。 问题原因: 编辑器里面多个按钮绑定同一个脚本, 每次绑定一个按钮事件,就会导致加载一次脚本 ,如上绑定了多个按钮的事件,脚本也就被加载多次,导致初始化接

    2024年02月07日
    浏览(58)
  • Cocos Creator问题汇总

    [Window] Cannot read property ‘cameraPriority’ of null node.on(Node.EventType.TOUCH_END, this.onBlockClicked, this); 解决 :监听的时候,node节点上必须有UITransform组件 Camera priority error - Cocos Creator - Cocos Forums 新建的prefab在运行的时候ui不显示,只能看到按钮上的label文本内容。 解决 :检查是否有C

    2024年02月13日
    浏览(40)
  • FariyGUI × Cocos Creator 入门

    程序员向的初探Cocos Creator结和FairyGUI的使用,会比较偏向FairyGUI一点,默认各位读者都熟练掌握Cocos Creator以及js/ts脚本编写。 初探门径,欢迎大佬指教,欢迎在评论区或私信与本人交流,谢谢! 都不需要科学上网,非常友好。 下载fgui:https://www.fairygui.com/ 下载Cocos Creator并安

    2024年02月22日
    浏览(47)
  • cocos creator踩坑记录

    cocos creator踩坑记录 removeFromParent 和removeAllChildren cocos2dx直接从父节点移除并回收内存 creator 则只是从父节点移除,回收内存则需要使用destory,creator 使用destroy并不会立即在父节点中移除该节点,会延后执行。 官方文档地址 模拟器 Android APP点击EditBox报错 Function: JSB_showInputBo

    2024年02月15日
    浏览(43)
  • Cocos Creator 使用protobufjs

    在使用cocos creator开发微信小程序的时候,服务器是使用的skynet,服务器与前端的通讯想使用protobuf,网上有文档,但不多,经过一天的奋斗,终于是让cocos creator能够使用protobuf 官网文档参考: https://www.npmjs.com/package/protobufjs https://docs.cocos.com/creator/3.5/manual/zh/scripting/modules/example.html p

    2024年02月05日
    浏览(52)
  • Cocos Creator:AR 交互

    推荐:将 NSDT场景编辑器

    2024年02月09日
    浏览(72)
  • cocos creator 鼠标画笔|画线

    cocos creator 版本使用 至少适配版本2.3.2以上 案例: 简要思路:MOUSE_MOVE事件和Graphics组件实现 前端也可以通过canvas和mousemove事件实现,原理一致 具体步骤如下: 1.添加节点Node 2.在Node节点上绑定 组件Graphics 3.添加下方脚本drawcontroll.ts 4.注意Node节点的锚点和位置(如果不想要这个

    2024年02月11日
    浏览(43)
  • cocos creator 学习第一篇

    unity 编程语言主要为c# 早期cocos2d 等用c++ 或者lua cocos creator 编程语言主要为js 所以cocos 适合h5 小游戏,而且跨平台性更好,unity性能可能更好 cocos creator简介 cocos2d-python cocos 1.x 2d cocos 2.x 也是2d 为了不影响2d版本,单独出了3d版本,只有一个版本 cocos 3.x 在cocos 3d基础上 又将2d加

    2024年02月04日
    浏览(43)
  • cocos creator 节点的镜像反转

    自己在做横版小游戏的时候,想左右运动时精灵图直接旋转,但是一直搞不懂那个旋转,后面才发现2d情况下,旋转时没有z轴,就只能是原地转圈上下颠倒,而想要镜像反转的话就需要开启3d模式了 如果是在编辑器上的话直接点击左上角最右边的3D按钮就行了 如果是想在代码

    2024年02月12日
    浏览(64)
  • 详解 Cocos Creator 如何使用websocket

    我在看B站cocos教程Cocos Creator零基础小白超神教程P69集遇到socketio无法正常使用的问题。经过百度,才了解到现在cocos creator实现客户端和服务器之间的双向通信是通过WebSocket 协议。WebSocket 是一种非常常用的网络通信协议,本文将详细讲解 Cocos Creator 如何使用 WebSocket,包括 W

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包