/****
* Classes
****/
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 1.5;
self.bounceFactor = 0.7;
self._move_migrated = function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityY += self.gravity;
self.rotation += self.velocityX * 0.005;
if (self.x - self.width / 2 < 0) {
self.velocityX *= -0.7;
self.x = self.width / 2;
}
if (self.x + self.width / 2 > 2048) {
self.velocityX *= -0.7;
self.x = 2048 - self.width / 2;
}
};
self.bounce = function (boot) {
var dx = self.x - boot.x;
var dy = self.y - boot.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < boot.realWidth / 2 + self.width / 2) {
var angle = Math.atan2(dy, dx);
var sin = Math.sin(angle);
var cos = Math.cos(angle);
var bootSpeed = Math.sqrt(boot.velocityX * boot.velocityX + boot.velocityY * boot.velocityY);
var ballSpeed = Math.sqrt(self.velocityX * self.velocityX + self.velocityY * self.velocityY);
var totalSpeed = (bootSpeed + ballSpeed) * self.bounceFactor;
var directionX = cos * totalSpeed;
var directionY = sin * totalSpeed;
var scoreIncrement = Math.max(0, Math.round(totalSpeed) - 20);
self.parent.score += scoreIncrement;
LK.setScore(self.parent.score);
self.velocityX = directionX;
self.velocityY = directionY;
var overlap = boot.realWidth / 2 + self.width / 2 - distance;
self.x += 2 * overlap * cos;
self.y += 2 * overlap * sin;
}
};
});
var Boot = Container.expand(function () {
var self = Container.call(this);
var bootGraphics = self.attachAsset('boot', {
anchorX: 0.5,
anchorY: 0.5
});
self.realWidth = bootGraphics.width * 0.7;
self.velocityX = 0;
self.velocityY = 0;
self.previousX = 0;
self.previousY = 0;
self.calculateVelocity = function () {
self.velocityX = self.x - self.previousX;
self.velocityY = self.y - self.previousY;
self.previousX = self.x;
self.previousY = self.y;
var targetRotation = -Math.atan2(self.velocityY, 0) / 2 + Math.PI / 9;
self.rotation += (targetRotation - self.rotation) * 0.1;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x36759c
});
/****
* Game Code
****/
var stadiumBackground = game.attachAsset('stadium', {
anchorX: 0.5,
anchorY: 0.5
});
stadiumBackground.x = 2048 / 2;
stadiumBackground.y = 2732 / 2;
stadiumBackground.alpha = .8;
game.on('move', function (x, y, obj) {
var pos = game.toLocal(obj.global);
boot.x = pos.x;
boot.y = pos.y;
});
var ball = game.addChild(new Ball());
ball.x = 2048 / 2;
ball.y = 2732 / 4;
var boot = game.addChild(new Boot());
boot.x = 2048 / 2;
boot.y = 2732 / 2;
boot.visible = true;
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(.5, 0);
LK.gui.top.addChild(scoreTxt);
var tutorialTxt = new Text2('Kick harder for more points', {
size: 100,
fill: 0xFFFFFF,
dropShadow: true,
dropShadowColor: '#000000',
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6
});
tutorialTxt.anchor.set(.5, 1);
LK.gui.bottom.addChild(tutorialTxt);
var isGameOver = false;
var isGameStarted = false;
game.score = 0;
game.on('down', function (x, y, obj) {
var pos = game.toLocal(obj.global);
boot.x = pos.x;
boot.y = pos.y;
boot.visible = true;
});
LK.on('tick', function () {
boot.calculateVelocity();
if (!isGameStarted) {
var dx = boot.x - ball.x;
var dy = boot.y - ball.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < boot.realWidth / 2 + ball.width / 2) {
ball.bounce(boot);
isGameStarted = true;
}
} else {
ball._move_migrated();
var dx = boot.x - ball.x;
var dy = boot.y - ball.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < boot.realWidth / 2 + ball.width / 2) {
ball.bounce(boot);
}
}
if (ball.y > 2732 - ball.height / 2) {
isGameOver = true;
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
LK.setScore(game.score);
scoreTxt.setText(LK.getScore());
}); ===================================================================
--- original.js
+++ change.js
@@ -1,27 +1,7 @@
/****
* Classes
-****/
-var Boot = Container.expand(function () {
- var self = Container.call(this);
- var bootGraphics = self.attachAsset('boot', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.realWidth = bootGraphics.width * 0.7;
- self.velocityX = 0;
- self.velocityY = 0;
- self.previousX = 0;
- self.previousY = 0;
- self.calculateVelocity = function () {
- self.velocityX = self.x - self.previousX;
- self.velocityY = self.y - self.previousY;
- self.previousX = self.x;
- self.previousY = self.y;
- var targetRotation = -Math.atan2(self.velocityY, 0) / 2 + Math.PI / 9;
- self.rotation += (targetRotation - self.rotation) * 0.1;
- };
-});
+****/
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
@@ -30,9 +10,9 @@
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 1.5;
self.bounceFactor = 0.7;
- self.move = function () {
+ self._move_migrated = function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityY += self.gravity;
self.rotation += self.velocityX * 0.005;
@@ -68,28 +48,48 @@
self.y += 2 * overlap * sin;
}
};
});
+var Boot = Container.expand(function () {
+ var self = Container.call(this);
+ var bootGraphics = self.attachAsset('boot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.realWidth = bootGraphics.width * 0.7;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.previousX = 0;
+ self.previousY = 0;
+ self.calculateVelocity = function () {
+ self.velocityX = self.x - self.previousX;
+ self.velocityY = self.y - self.previousY;
+ self.previousX = self.x;
+ self.previousY = self.y;
+ var targetRotation = -Math.atan2(self.velocityY, 0) / 2 + Math.PI / 9;
+ self.rotation += (targetRotation - self.rotation) * 0.1;
+ };
+});
/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
backgroundColor: 0x36759c
});
/****
* Game Code
-****/
+****/
var stadiumBackground = game.attachAsset('stadium', {
anchorX: 0.5,
anchorY: 0.5
});
stadiumBackground.x = 2048 / 2;
stadiumBackground.y = 2732 / 2;
stadiumBackground.alpha = .8;
-game.on('move', function (obj) {
- var pos = obj.event.getLocalPosition(game);
+game.on('move', function (x, y, obj) {
+ var pos = game.toLocal(obj.global);
boot.x = pos.x;
boot.y = pos.y;
});
var ball = game.addChild(new Ball());
@@ -100,15 +100,15 @@
boot.y = 2732 / 2;
boot.visible = true;
var scoreTxt = new Text2('0', {
size: 150,
- fill: "#ffffff"
+ fill: 0xFFFFFF
});
scoreTxt.anchor.set(.5, 0);
-LK.gui.topCenter.addChild(scoreTxt);
+LK.gui.top.addChild(scoreTxt);
var tutorialTxt = new Text2('Kick harder for more points', {
size: 100,
- fill: "#ffffff",
+ fill: 0xFFFFFF,
dropShadow: true,
dropShadowColor: '#000000',
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
@@ -118,10 +118,10 @@
LK.gui.bottom.addChild(tutorialTxt);
var isGameOver = false;
var isGameStarted = false;
game.score = 0;
-game.on('down', function (obj) {
- var pos = obj.event.getLocalPosition(game);
+game.on('down', function (x, y, obj) {
+ var pos = game.toLocal(obj.global);
boot.x = pos.x;
boot.y = pos.y;
boot.visible = true;
});
@@ -135,9 +135,9 @@
ball.bounce(boot);
isGameStarted = true;
}
} else {
- ball.move();
+ ball._move_migrated();
var dx = boot.x - ball.x;
var dy = boot.y - ball.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < boot.realWidth / 2 + ball.width / 2) {