var Cube = Container.expand(function () {
var self = Container.call(this);
var cubeGraphics = self.createAsset('cube', 'Cube object', .5, .5);
self.spawn = function (x, y) {
this.x = x;
this.y = y + 100;
};
});
var Floor = Container.expand(function () {
var self = Container.call(this);
var floorGraphics = self.createAsset('floor', 'Floor platform', 0, 1);
floorGraphics.width = 2048;
self.spawn = function (x, y) {
this.x = x;
this.y = y;
};
});
var Monkey = Container.expand(function () {
var self = Container.call(this);
var monkeyGraphics = self.createAsset('monkey', 'Monkey character', .5, .5);
monkeyGraphics.scale.x *= 0.8;
monkeyGraphics.scale.y *= 0.8;
self.jumpCount = 0;
self.jumpHeight = 100;
self.gravity = 5;
self.velocityY = null;
self.move = function (direction) {
if (direction === 'left') {
this.x -= 20;
monkeyGraphics.scale.x = -1;
} else if (direction === 'right') {
this.x += 20;
monkeyGraphics.scale.x = 1;
}
};
self.jump = function () {
if (this.jumpCount < 2) {
this.velocityY = -this.jumpHeight;
this.jumpCount++;
this.onPlatform = false;
}
};
self.collectBanana = function (banana) {
banana.destroy();
};
});
var BlueBanana = Container.expand(function () {
var self = Container.call(this);
var bananaGraphics = self.createAsset('banana', 'Banana collectible', .5, .5);
self.spawn = function () {
this.x = Math.random() * 2048;
this.y = -this.height;
this.velocityY = 2;
};
});
var Platform = Container.expand(function () {
var self = Container.call(this);
var platformGraphics = self.createAsset('platform', 'Platform for monkey to jump on', .5, .5);
self.spawn = function (x, y) {
this.x = Math.random() * 2048;
this.y = y;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var background = self.createAsset('background', 'Game background', 0, 0);
background.width = 2048;
background.height = 2732;
var monkey = self.addChild(new Monkey());
var score = 0;
var cube = self.addChild(new Cube());
cube.spawn(500, 2732 - cube.height);
self.bananas = [];
var platforms = [];
var floor = self.addChild(new Floor());
floor.spawn(0, 2732 - floor.height + 100);
var scoreTxt = new Text2('0', {
size: 150,
fill: '#ffffff'
});
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
var leftButton = self.createAsset('leftButton', 'Left control button', 0, 1);
var rightButton = self.createAsset('rightButton', 'Right control button', 1, 1);
leftButton.x = 50;
leftButton.y = 2732 - leftButton.height - 200;
leftButton.scale.x *= 1.5;
leftButton.scale.y *= 1.5;
rightButton.x = 2048 - rightButton.width - 50;
rightButton.y = 2732 - rightButton.height - 200;
rightButton.scale.x *= 1.5;
rightButton.scale.y *= 1.5;
var leftJumpButton = self.createAsset('jumpButton', 'Jump control button', 0, 1);
leftJumpButton.x = leftButton.x;
leftJumpButton.y = leftButton.y + leftButton.height + 100;
leftJumpButton.scale.x *= 1.5;
leftJumpButton.scale.y *= 1.5;
leftJumpButton.on('down', function () {
monkey.jump();
});
var rightJumpButton = self.createAsset('jumpButton', 'Jump control button', 1, 1);
rightJumpButton.x = rightButton.x;
rightJumpButton.y = rightButton.y + rightButton.height + 100;
rightJumpButton.scale.x *= 1.5;
rightJumpButton.scale.y *= 1.5;
rightJumpButton.on('down', function () {
monkey.jump();
});
for (var i = 0; i < 5; i++) {
var platform = new Platform();
if (i !== 0) {
platform.spawn(i * 500, 2732 - i * 200 - rightButton.height - 100);
}
platforms.push(platform);
self.addChild(platform);
var banana = new BlueBanana();
banana.spawn();
banana.x = platform.x + platform.width / 2 - 100;
banana.y = platform.y - banana.height / 2 - 100;
self.bananas.push(banana);
self.addChild(banana);
}
var startPlatform = new Platform();
startPlatform.spawn(500, 2732 - monkey.height - 200);
platforms.push(startPlatform);
self.addChild(startPlatform);
monkey.x = cube.x;
monkey.y = cube.y - monkey.height + 100;
var leftClickCount = 0;
leftButton.on('down', function () {
this.moveLeft = true;
this.y -= 10;
});
leftButton.on('up', function () {
this.moveLeft = false;
this.y += 10;
monkey.move('left');
});
leftButton.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
if (pos.y < this.y) {}
});
rightButton.on('down', function () {
this.moveRight = true;
this.y -= 10;
});
rightButton.on('up', function () {
this.moveRight = false;
this.y += 10;
monkey.move('right');
});
rightButton.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
if (pos.y < this.y) {}
});
LK.on('tick', function () {
if (leftButton.moveLeft) {
monkey.move('left');
}
if (rightButton.moveRight) {
monkey.move('right');
}
monkey.velocityY += monkey.gravity;
if (!(monkey.y + monkey.height > floor.y && monkey.y + monkey.height + monkey.velocityY < floor.y + floor.height) && !(monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height)) {
monkey.y += monkey.velocityY;
} else if (monkey.y + monkey.height > cube.y && monkey.y + monkey.height + monkey.velocityY < cube.y + cube.height) {
monkey.y = cube.y - monkey.height;
monkey.velocityY = 0;
monkey.jumpCount = 0;
}
for (var i = 0; i < platforms.length; i++) {
if (monkey.y + monkey.height >= platforms[i].y && monkey.y < platforms[i].y + platforms[i].height && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
monkey.y = platforms[i].y - monkey.height;
monkey.velocityY = 0;
monkey.jumpCount = 0;
}
}
for (var i = 0; i < self.bananas.length; i++) {
if (monkey.intersects(self.bananas[i])) {
monkey.collectBanana(self.bananas[i]);
score++;
scoreTxt.setText(score);
self.bananas.splice(i, 1);
}
}
for (var i = 0; i < platforms.length; i++) {
if (monkey.velocityY > 0 && monkey.y + monkey.height <= platforms[i].y && monkey.y + monkey.height + monkey.velocityY >= platforms[i].y && monkey.x + monkey.width > platforms[i].x && monkey.x < platforms[i].x + platforms[i].width) {
monkey.y = platforms[i].y - monkey.height;
monkey.velocityY = 0;
monkey.jumpCount = 0;
monkey.onPlatform = true;
if (monkey.x + monkey.width > platforms[i].x + platforms[i].width) {
monkey.x = platforms[i].x + platforms[i].width - monkey.width;
}
if (monkey.x < platforms[i].x) {
monkey.x = platforms[i].x;
}
}
for (var j = 0; j < self.bananas.length; j++) {
if (monkey.intersects(self.bananas[j])) {
monkey.collectBanana(self.bananas[j]);
self.bananas.splice(j, 1);
}
}
}
if (monkey.y < platforms[platforms.length - 1].y - 200) {
var platform = new Platform();
platform.spawn(platforms[platforms.length - 1].x, platforms[platforms.length - 1].y - 200);
platforms.push(platform);
self.addChild(platform);
var banana = new BlueBanana();
banana.spawn();
banana.x = platform.x + platform.width / 2 - 100;
banana.y = platform.y - banana.height / 2 - 100;
self.bananas.push(banana);
self.addChild(banana);
}
if (monkey.y < 2732 / 2 && monkey.velocityY < 0 && monkey.jumpCount > 0) {
for (var i = 0; i < platforms.length; i++) {
platforms[i].y += Math.abs(monkey.velocityY);
}
for (var i = 0; i < self.bananas.length; i++) {
self.bananas[i].y += Math.abs(monkey.velocityY);
}
cube.y += Math.abs(monkey.velocityY);
monkey.y += Math.abs(monkey.velocityY);
floor.y += Math.abs(monkey.velocityY);
}
for (var i = platforms.length - 1; i >= 0; i--) {
if (platforms[i].y > 2732) {
platforms[i].destroy();
platforms.splice(i, 1);
}
}
if (monkey.y > 2732 || score >= 50) {
LK.showGameOver();
}
for (var i = self.bananas.length - 1; i >= 0; i--) {
if (self.bananas[i].y > 2732) {
self.bananas[i].destroy();
self.bananas.splice(i, 1);
}
}
});
});
Yellow circle button unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
green circle button unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d single log laying long ways on side with vines seen from side unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d jungle canopy background side scroller unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows No ground
Monkey full body animation unreal engine seen from the side very cute In-Game asset. 3d. Blank background. High contrast. No shadows
jungle floor dirt 2d unreal engine seen from the side In-Game asset. 3d. Blank background. High contrast. No shadows
yellow banana unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
blue banana unreal engine 5 Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.