因为最近一段时间有打算做一个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
移动指定的距离。
返回:
示例:
// example
var actionTo = cc.moveBy(2, cc.p(windowSize.width - 40, windowSize.height - 40));
jumpBy
- duration
- position
- [y ]
- height
- jumps
)