cocos creater 简单的跳跃动作。

时间:2021-02-11 16:28:49

因为最近一段时间有打算做一个2D游戏的想法,就顺便学习了一下cocos,很惊异的它的脚本编写语言竟然支持js,正好以前对js有一定的了解,就临时拿起来了。

这是来自官方的一个实例,不过在参考过程中,发现这个函数并不是使用跳跃函数而是使用移动函数实现,就顺便记录下来了。

因为只是实现跳跃动作,所以只是简单的截取了实现跳跃的部分代码段。

cc.Class({
extends: cc.Component,

properties: {
// 主角跳跃高度
jumpHeight: 0,
// 主角跳跃持续时间
jumpDuration: 0,
//主角加速度
accel: 0,
},

onLoad: function () {
//初始化跳跃动作
this.jumpAction = this.setJumpAction();

//跳跃

this.accJump = false;

// 初始化键盘输入监听
this.setInputControl();

},

setInputControl: function () {
var self = this;
// 添加键盘事件监听
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
// 有按键按下时,判断是否是我们指定的方向控制键,并设置向对应方向速度
onKeyPressed: function(keyCode, event) {

switch(keyCode) {

case cc.KEY.j:
self.accJump = true;
break;
}

},

setJumpAction: function () {
// 跳跃上升
var jumpUp = cc.moveBy(this.jumpDuration, cc.p(0, this.jumpHeight)).easing(cc.easeCubicActionOut());
// 下落
var jumpDown = cc.moveBy(this.jumpDuration, cc.p(0, -this.jumpHeight)).easing(cc.easeCubicActionIn());
// 跳跃
return cc.sequence(jumpUp, jumpDown)
},

update: function (dt) {
// 根据当前速度更新主角的位置
if(this.accJump){
this.accJump = false;
this.node.runAction(this.jumpAction);
}
},

})

上面是一个简单的实例,因为是手打的可能有标点符号的问题。

上边的跳跃实现是用移动Y轴的两个点实现的,使用的moveby函数,而非jumpby,

大概因为惯性思维的缘故,一想到跳跃,就想当然的去用jumpby。

毕竟是新手的缘故,还有许多需要了解的地方。

顺便贴上官方文档中moveby跟jumpby的解释:

moveBy

(
  • duration
  • deltaPos
  • deltaY

)

ActionInterval

 

移动指定的距离。

名称 类型 描述
duration Number

duration in seconds

deltaPos Vec2 | Number  
deltaY Number  

返回:

类型: ActionInterval

示例:

// example
var actionTo = cc.moveBy(2, cc.p(windowSize.width - 40, windowSize.height - 40));

jumpBy

(
  • duration
  • position
  • [y ]
  • height
  • jumps

)

ActionInterval

 

用跳跃的方式移动指定的距离。

名称 类型 描述
duration Number  
position Vec2 | Number  
y optional Number  
height Number  
jumps Number  

返回:

类型: ActionInterval

示例:

// example
var actionBy = cc.jumpBy(2, cc.p(300, 0), 50, 4);
var actionBy = cc.jumpBy(2, 300, 0, 50, 4);