CocosCreator之KUOKUO带你做触摸后归位

2023-11-09 19:50

本文主要是介绍CocosCreator之KUOKUO带你做触摸后归位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本次引擎2.0.5

编辑工具VSCode

如遇不会某个步骤可以先过一遍之前教程,或者下方评论,感谢支持!

 

目标:让不听话小方块听话

 

今天教大家CocosCreator的触摸监听函数;

(游戏内坐标是中心为原点,对于触摸是左下角为原点,需转换)

好了,我们新建一个项目:

然后建个白色背景(Sprite(单色))起名bk,

再建一个红色主角;

我们的主角是怎么不听话的呢?

你点它它就乱跑!

我们给它绑个脚本先:

新建个zhujuejs,哦,记得保存一下场景。

然后我们把脚本绑定在主角上:

打开脚本,让脚本可爱起来。

我们解开onLoad的封印(哈哈),脚本的运行顺序是:onLoad(),然后start(),然后update(dt)

随后update(dt)在游戏的每一帧都调用。

(我们声明一些东西都在onLoad,然后在start中处理。)

好,我们写下一个触摸监听函数:

在onLoad()函数中写下了触摸监听函数,监听的是‘touchstart’,也就是点击开始

(触摸事件有4个:开始时(1次),移动时(n次),在节点中抬起手(1次),在节点外抬起手(1次))

对应的是:

懂了吧,我们来让小方块不听话:

cc.Class({extends: cc.Component,properties: {},onLoad () {this.node.on('touchstart',function(){//x应该是在-430到430之间运动this.node.x = -430 + 860*Math.random();//y应该是在-270到270之间运动this.node.y = -270 + 540*Math.random();},this);},start () {},// update (dt) {},
});

鼠标点下去,它就跑啦~~不听话吧,滑稽!

但是它是瞬间过去的,我们结合动作系统让它飘逸起来。

第一步先加动作:

怎么样,当你点的时候,你会发现,它咻的一下飞出去了。

怎么样?但是不听话的小方块不是好方块。

我们让它听话:

我们改一下监听的动作,监听touchmove。

有的小伙伴问了:我们手指在屏幕上移动时,怎么得到触摸点呢?

这么得到,在function(这里加个event来接受);

但是我们运行的时候会发现节点不在触摸点,这是因为我之前说的,Cocos有两个坐标系,一个触摸的,一个游戏内的。

我们转换一下:

成功是成功了,可是他为什么会抖动加闪烁呢?

哈哈,因为这个:

因为以本节点(主角)为参考,,但主角在动啊!!!!!

那怎么办,找个不动的呗!(主角的父节点是Canvas,不动)

(别告诉我你不会看子节点和父节点,好吧,我简单讲一下,在层级管理器中,默认Canvas是老大,点开它的下拉小三角,那都是它的子节点。)

好了,我们以主角的父节点为基准:

cc.Class({extends: cc.Component,properties: {},onLoad () {this.node.on('touchmove',function(event){var touch_xy = event.getLocation();//获取当前触点位置//以本节点父节点为参考,转换触摸坐标至游戏坐标var game_xy = this.node.parent.convertToNodeSpaceAR(touch_xy);this.node.x = game_xy.x;this.node.y = game_xy.y;},this);},start () {},// update (dt) {},
});

好了,我们的小方块可以听话的跟着触摸点走了呢!

那么下一个问题,怎么回去呢???

简单,加个变量储存就行了。

(给出代码)

cc.Class({extends: cc.Component,properties: {//用于存储坐标old_xy:null,},onLoad () {//点击后把坐标存好this.node.on('touchstart',function(){//this.node.position的用处跟分别给x,y赋值是一样的this.old_xy = this.node.position;},this);//移动this.node.on('touchmove',function(event){var touch_xy = event.getLocation();//获取当前触点位置//以本节点父节点为参考,转换触摸坐标至游戏坐标var game_xy = this.node.parent.convertToNodeSpaceAR(touch_xy);this.node.x = game_xy.x;this.node.y = game_xy.y;},this);//触摸结束时this.node.on('touchend',function(){//把节点的位置重新给回来this.node.position = this.old_xy;},this);},start () {},// update (dt) {},
});

怎么样,学会了吗?

O(∩_∩)O~~

这篇关于CocosCreator之KUOKUO带你做触摸后归位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378186

相关文章

Android触摸事件处理机制之requestDisallowInterceptTouchEvent

一、触摸事件传递的规则 当手指触摸到屏幕时,系统就会调用相应的View的onTouchEvent,并传入一系列的action。当有多个层级的View时,在父层级允许的情况下,这个action会一直向下传递直到遇到最深层的View。所以touch事件最先调用的是最底层View的onTouchEvent,如果View的onTouchEvent接收到某个touchaction并做了相应处理,最后有两种

Android 自定义View控件,实现跟随手指触摸移动的小球

Android UI组件是通过继承View类,然后绘制内容,比如ImageView,TextView等组件都是继承View类。 当Android系统提供的组件功能不能满足需求时,可以通过继承View类重写一个或多个方法,派生自定义的组件,View类常用重写方法: 1.构造器:View子类最基本的重写方法 protected voidonDraw(Canvas canvas) public

Cocos2dx 3.0 过渡篇(三) 触摸机制

尊重原创,转载请注明来自:star特530的CSDN博客 http://blog.csdn.net/start530/article/details/18325493 本来在中午休息时间打算大展拳脚,好好写一篇新触摸机制相关的博文,结果,等真正下手的时候才发现无从下手,很多地方自己都说不清,赶紧看了下testCpp,才发现原来是这样,还可以这样,哦?这样都行?哎,我还是太年轻了。   咱也只能

(素材源码)猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放

猫猫分享,必须精品 素材代码地址:http://download.csdn.net/detail/u013357243/8531273 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果 ps:新建iOS交流学习群:304570962 ps:猫猫的文章竟然被好多地方转载了,受宠若惊啊,不过转的时候请转的全一点,别

猫猫学IOS(九)UI之UIScrollView代理触摸实现_图片缩放

猫猫分享,必须精品 素材代码地址:http://blog.csdn.net/u013357243/article/details/44619193 原文地址:http://blog.csdn.net/u013357243?viewmode=contents 先看效果 代码 //// NYViewController.m// 05-放大缩小图片UIScrollView//

CocosCreator构建Android项目

CocosCreator构建Android项目 需要安装配置原生环境:官网教程 Visual Studio Code 用于编写js cocos软件:下载地址 android sdk 要低于25 否则不支持ant android ndk r10版本 :ndk不要太高10可以用了 ndk_r10e(Jan 2015) Windows32-bit : http://dl.google.co

CocosCreator物理引擎Demo源码分析(3)-stick-arrow

CocosCreator开发笔记(8)-读取和解析JSON数据文件 Box2D C++ 三种作用力效果 ApplyForce、ApplyLinearImpulse、SetLinearVelocity stick-arrow示例展示了如何动态发射刚体飞往目标点。 技术点 1、触摸屏幕发射刚体,计算起点和目标点的夹角,设置刚体的线性速度。 2、在Update中不断施加一个作用力到刚体尾部

触摸传感器的工作原理

触摸传感器的工作原理因类型而异,常见的触摸传感器类型包括电容式、电阻式、红外式和超声波式等。以下是一些常见触摸传感器的工作原理: 电容式触摸传感器:通过检测触摸点与传感器电极之间的电容变化来确定触摸位置。当手指触摸屏幕时,会改变电极之间的电容,从而被传感器检测到。  电阻式触摸传感器:由两层导电材料组成,中间有微小的间隔。当手指触摸屏幕时,两层导电材料会接触,从而改变电阻值,被传

Android多点触摸手势滑动的一种简单方法

GestureDetector_left = new GestureDetector(this,new GestureListener_left());       //左部  手势监听(内部类) GestureDetector_right = new GestureDetector(this,new GestureListener_right());   //右部  手势监听(内部类)

具备自动灵敏度校准、支持单键和多点触控的触摸芯片-GTX315L

电容式触摸芯片 - GTX315L是具有多通道触发传感器的15位触摸传感器系列,它是通过持续模式提供中断功能和唤醒功能,具备自动灵敏度校准、超强抗干扰能力,可抗特斯拉(小黑盒)线圈干扰,支持单键/多点触控;被广泛应用于智能门锁、便携式电子产品、多媒体设备、智能家电以及办公设备等领域,可直接兼容原机械式轻触按键的处理信号。 该芯片工作电压范围:1.8V~5.5V,采用I2C通信协议;支持超低功耗、