我想做一隻好像如下的遊戲:
它是由左向右移, 但我的是由下向上移.
目標/問題:我想把 原本能向上下移動的player, 不能向前活動 (可向下).
首先我利用 Touch_Move 去移動本塊.
跟著利用 onCollisionEnter 去detect 碰撞, 如找到 self.collider = true,
onLoad: function () {
var self = this;
self.isMoving = false;
self.success = false;
cc.director.getCollisionManager().enabled = true;
cc.director.getCollisionManager().enabledDebugDraw = true;
self.moveToPos = cc.p(self.player.position.x, self.player.position.y);
self.player.on(cc.Node.EventType.TOUCH_START, function (event) {
var touches = event.getTouches();
var touchLoc = touches[0].getLocation();
self.active = "player";
self.isMoving = true;
self.moveToPos = self.player.parent.convertToNodeSpaceAR(touchLoc);
self.blocks.stopAllAnimation();
self.player.getComponent(cc.Animation).play();
}, self.node);
self.player.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
var touches = event.getTouches();
var touchLoc = touches[0].getLocation();
self.isMoving = true;
self.moveToPos = self.player.parent.convertToNodeSpaceAR(touchLoc);
}, self.node);
self.player.on(cc.Node.EventType.TOUCH_END, function (event) {
self.isMoving = false;
}, self.node);
},
onCollisionEnter: function (other, self) {
this.node.color = cc.Color.RED;
this.collided = true;
},
update: function (dt) {
if (!this.isMoving) return;
// Check Collision
var rect1 = this.exitTop.getBoundingBox();
var rect2 = this.player.getBoundingBox();
if (cc.rectIntersectsRect(rect1, rect2)) {
this.success = true;
}
// check if Player is reach to exit
if (this.success && this.player.position.y <= this.exitTop.position.y) {
this.movingSpeed = 400;
this.player.setPosition(this.player.x, this.player.y + this.movingSpeed * dt);
}
console.log(this.collided); ********* 這code 不停 在console return true, false, true, false, ....etc
if (!this.collided) {
// movement of Player
if (!this.success && parseInt(this.moveToPos.y) >= this.exitBottom.position.y) {
this.player.setPosition(this.player.x, this.moveToPos.y);
}
}
},
急, 多謝.