分享一个参考Unity的Input系统写的Creator3.0的Input系统

creator3.x 或 creator3d 版
InputManager_creator3d-3.0.zip (2.0 KB)
creator2.x版
InputManager_creator2.x.zip (1.9 KB)

使用方法,把InputManager.ts丢进项目里,然后在其它脚本的update里调用

QQ图片20210409101153

参考Unity的做法,是不是一样

QQ图片20210409101351

对比Creator原有的做法

systemEvent.on(SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
private onKeyDown(event:EventKeyboard)
{
var keyCode:number = event.keyCode;
if(keyCode == macro.KEY.q)
{
//持续按下Q键,一直触发
}
}

和creator的原本做法对比是不是觉得原本做法很繁琐,而且原本的监听SystemEvent.EventType.KEY_DOWN按下事件是持续事件,只要你按住按键不放,事件会一直触发,很恶心,想要按下瞬间事件都没有。还有注册了事件时刻记住要注销事件,一旦忘记了,脚本被销毁了,事件还在监听,触发了按键一定会报异常

我提供的Input.getKeyDown,是只触发一次,Input.getKey是长按一直触发,Input.getKeyUp是释放,这些接口和unity的Input接口功能一模一样。不用监听事件,也没有事件概念,脚本销毁就触发不到按键事件

除了按键事件之外,还默认提供了方向控制接口
Input.axis.x, Input.axis.y
对应unity的
Input.GetAxis(“Horizontal”), Input.GetAxis(“Vertical”)
默认是WASD或上下左右方向键,这也和unity一样。

//Input.axis的使用
update(deltaTime: number)
{
this.node.translate(new Vec3(Input.axis.x * deltaTime * 100,Input.axis.y * deltaTime * 100,0));
//100是移动速度,按WASD 或键盘方向键就可以移动物体了
//这样方便很多了吧,不用每次自己监听事件释放事件,直接用就可以了
}

最后还有一个unity的Input.mousePosition没完成功能,这个是实时更新最新的鼠标位置,因为通过系统监听鼠标事件时,一旦其它Node监听了鼠标事件,事件就被截获,导致系统监听不到鼠标事件,看各位论坛大神有没有办法实现这个功能

11赞

这个功能发布了这么久了,好像没人感兴趣啊 :joy:

大佬鼠标事件有实现吗

可能很多人没用过unity cocos这种方式用习惯了

好东西,赞一下,真棒

找到办法实现了,还没上传

好东西,赞一下,真棒

cocos主要用来做小游戏. 没多少人会用来做pc端的

cocos做H5的可能会用到

开发时做代码测试用得着,通过按键测试代码,如果用引擎自带的事件监听,非常繁琐。用我这种方式就方便多了

1赞

正好准备上4399,试了下还挺好用,赞赞赞

非常good :laughing:

大佬,有最新的吗?我想要类似unity 的 Input.GetAxis(“Mouse X”) 实现效果。

我邮箱 350033540@qq.com

麻烦大佬了。

https://easymapeditor-1258223435.cos.ap-guangzhou.myqcloud.com/v2.0.0/web-mobile/index.html
上面链接我写的这个地图编辑器里提供有,Input.GetAxis(“MouseX”)。
打开上面链接,在”菜单栏“的”下载“菜单里的下载基础框架,下载一个2.x或者3.x的框架。
在框架里找到 InputManager脚本,这个就是你要的。然后丢到你的项目里随便一个地方就可以了

如果要读取鼠标位置,可以解除截图里注释的代码

这里是你要的接口

你要的 Input.GetAxis(“MouseX”)接口,Input.axis.x 就是

备注:creator3.x版本的输入管理,因为Input被引擎提前命名了,所以改命名为 UInput。
例如这样用: UInput.axis.x

Input组件.zip (7.7 KB)
直接发给你吧,包含2.x和3.x

1赞

非常感谢大佬!!!!!!!膜拜!!!!!!!!

大佬问下3.0有办法能实现模拟鼠标点击某个点吗?
2.0实现了,但是3.0搞不了,头大。。。