因為最近一段時間有打算做一個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