User prompt
move up multiplierLabel by 100px
User prompt
in hoop moveto move up hoop rim y by 100px
User prompt
move up hoopRim by 100px
User prompt
add 50px to rightElement x
User prompt
subtract 50px from leftElement x
User prompt
move up left and right elements by 50px
User prompt
move down hoopRimGraphics by 50px
User prompt
move up left and right elements by 50px
User prompt
move down hoopRimGraphics by 50px
User prompt
set hoopRimGraphics and left + right element alpha to 1
User prompt
when resetting ball y position use 2632 rather than 2732
Code edit (3 edits merged)
Please save this source code
User prompt
after resetting hall and setting hasBounced = false, set ball alpha to 1
User prompt
when calculating ball shadow alpha multiply with ball alpha
User prompt
ecrease alpha of ball 15x faster in ball move
Code edit (1 edits merged)
Please save this source code
User prompt
ecrease alpha of ball 3x faster in ball move
User prompt
decrease alpha of ball 10x faster in ball move
User prompt
In ball move if hasScored, decrease the alpha of the ball
User prompt
both places floor y is defined, update it to be 2732 - 40 + 900 * (ball.scale.y - 1); Do not change any other code
User prompt
update floor y calculations to be 2732 - 40 + 900 * (ball.scale.y - 1);
Code edit (1 edits merged)
Please save this source code
Code edit (5 edits merged)
Please save this source code
User prompt
calculate floorY again in the first line of tick
User prompt
calculate floorY in the first line of tick method
var HoopRim = Container.expand(function () { var self = Container.call(this); var hoopRimGraphics = LK.getAsset('hoopRimSeparate', 'Basketball Hoop Rim Separate', .5, .5); self.addChild(hoopRimGraphics); }); var Ball = Container.expand(function () { var self = Container.call(this); self.hasScored = false; self.hasBounced = false; var ballGraphics = LK.getAsset('ball', 'Basketball', .5, .5); self.addChild(ballGraphics); self.speed = { x: 0, y: 0 }; self.hasThrown = false; self.move = function () { self.speed.y += 3.2; self.x += self.speed.x; self.y += self.speed.y; self.rotation += self.speed.x * 0.01; if (self.hasThrown) { var targetScale = 0.8; self.scale.x += (targetScale - self.scale.x) * 0.05; self.scale.y += (targetScale - self.scale.y) * 0.05; } if (self.hasScored) { self.alpha -= 0.15; } }; self.bounceOffPoint = function (x, y, elasticity) { var dx = self.x - x; var dy = self.y - y; var angle = Math.atan2(dy, dx); var speed = Math.sqrt(self.speed.x * self.speed.x + self.speed.y * self.speed.y); self.speed.x = Math.cos(angle) * speed * elasticity; self.speed.y = Math.sin(angle) * speed * elasticity; }; self.angleTo = function (x, y) { var dx = self.x - x; var dy = self.y - y; return Math.atan2(dy, dx); }; self.distanceTo = function (x, y) { var dx = self.x - x; var dy = self.y - y; return Math.sqrt(dx * dx + dy * dy); }; self.moveToDistance = function (x, y, distance) { var angle = self.angleTo(x, y); self.x = x + Math.cos(angle) * (distance * 1.05); self.y = y + Math.sin(angle) * (distance * 1.05); }; }); var Hoop = Container.expand(function () { var self = Container.call(this); self.moveTo = function (newX, newY, hoopRim) { var dx = (newX - self.x) / 60; var dy = (newY - self.y) / 60; var steps = 0; var interval = LK.setInterval(function () { self.x += dx; self.y += dy; hoopRim.x = self.x; hoopRim.y = self.y + self.children[1].y - 250; steps++; if (steps >= 60) { LK.clearInterval(interval); } }); }; var backboardGraphics = LK.getAsset('backboard', 'Basketball Backboard', .5, .5); backboardGraphics.y -= 250; self.addChild(backboardGraphics); self.hoopRimGraphics = LK.getAsset('hoopRim', 'Basketball Hoop Rim', .5, .5); self.hoopRimGraphics.y = backboardGraphics.height / 2 - 550 + 20 + 120 + 150 + 100; self.hoopRimGraphics.alpha = 1; self.addChild(self.hoopRimGraphics); self.leftElement = LK.getAsset('leftElement', 'Left Side Element', .5, .5); self.leftElement.x = self.hoopRimGraphics.x - self.hoopRimGraphics.width / 2 + self.leftElement.width / 2 - 50; self.leftElement.y = self.hoopRimGraphics.y - 250; self.leftElement.alpha = 1; self.addChild(self.leftElement); self.rightElement = LK.getAsset('rightElement', 'Right Side Element', .5, .5); self.rightElement.x = self.hoopRimGraphics.x + self.hoopRimGraphics.width / 2 - self.rightElement.width / 2 + 50; self.rightElement.y = self.hoopRimGraphics.y - 250; self.rightElement.alpha = 1; self.addChild(self.rightElement); self.multiplierLabel = new Text2('', { size: 150 * 1.3 * 1.3, fill: '#9f4a2d', font: 'Impact' }); self.multiplierLabel.anchor.set(.5, .5); self.multiplierLabel.x = self.hoopRimGraphics.x; self.multiplierLabel.y = self.hoopRimGraphics.y - 250 + 20 - 180; self.addChild(self.multiplierLabel); }); var Game = Container.expand(function () { var self = Container.call(this); var bg = LK.getAsset('background', 'Background Image', 0.5, 0.5); bg.x = 2048 / 2; bg.y = 2732 / 2 + 150; bg.alpha = 0.7; self.addChild(bg); var hoop = self.addChild(new Hoop()); var score = 0; var scoreMultiplier = 1; var scoreTxt = new Text2(score.toString(), { size: 150, fill: '#ffffff', font: 'Impact', dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); scoreTxt.anchor.set(.5, 0); LK.gui.topCenter.addChild(scoreTxt); var ballShadow = LK.getAsset('ballShadow', 'Ball Shadow', .5, .5); ballShadow.alpha = 0.5; self.addChild(ballShadow); var ball = self.addChild(new Ball()); var hoopRim = self.addChild(new HoopRim()); ball.hitElement = ''; hoop.x = 2048 / 2; hoop.y = 2732 / 2; hoopRim.x = hoop.x; hoopRim.y = hoop.y + hoop.children[1].y - 250; ball.x = 2048 / 2; ball.on('down', function (obj) { if (!ball.hasThrown) { var event = obj.event; dragStart = event.getLocalPosition(self); } }); var dragStart = null; stage.on('move', function (obj) { var event = obj.event; var pos = event.getLocalPosition(self); if (dragStart !== null && ball.distanceTo(pos.x, pos.y) > 200) { self.fireBall(obj); } }); self.fireBall = function (obj) { if (dragStart !== null) { var event = obj.event; var pos = event.getLocalPosition(self); var dx = pos.x - dragStart.x; var dy = pos.y - dragStart.y; var angle = Math.atan2(dy, dx); ball.speed.x = Math.cos(angle) * 72 * 1.76 * 0.9 / 3; ball.speed.y = Math.sin(angle) * 72 * 1.76 * 0.9; ball.hasThrown = true; ball.hitElement = ''; self.removeChild(ball); self.addChild(ball); dragStart = null; } }; stage.on('up', function (obj) { self.fireBall(obj); }); var floorY = 2732 - 40 + 900 * (ball.scale.y - 1); ball.y = floorY - ball.height; LK.on('tick', function () { var floorY = 2732 - 40 + 900 * (ball.scale.y - 1); ball.move(); if (ball.speed.y > 0) { self.removeChild(hoopRim); self.addChild(hoopRim); if (ball.distanceTo(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y) < ball.width / 2 + hoop.leftElement.width / 2) { ball.moveToDistance(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y, ball.width / 2 + hoop.leftElement.width / 2 + 1); ball.bounceOffPoint(hoop.x + hoop.leftElement.x, hoop.y + hoop.leftElement.y, 0.5); ball.hitElement = 'left'; } if (ball.distanceTo(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y) < ball.width / 2 + hoop.rightElement.width / 2) { ball.moveToDistance(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y, ball.width / 2 + hoop.rightElement.width / 2 + 1); ball.bounceOffPoint(hoop.x + hoop.rightElement.x, hoop.y + hoop.rightElement.y, 0.5); ball.hitElement = 'right'; } } ballShadow.x = ball.x; ballShadow.y = 1800 + ball.height / 2 + 500 * ball.scale.x; var scale = (1 - 2 * (ball.y - 2732 + ball.height) / 2732) * ball.scale.x; ballShadow.scale.set(scale); ballShadow.alpha = (1 - scale + 1) / 2 * ball.alpha; if (ball.y + ball.height > floorY) { ball.y = floorY - ball.height; ball.speed.y *= -0.75; ballShadow.x = ball.x; ballShadow.visible = true; if (ball.hasThrown && !ball.hasScored) { if (!ball.hasBounced) { ball.hasBounced = true; } else { LK.showGameOver(); } } else if (ball.hasScored) { ball.x = 2048 / 2; ball.y = 2632 - ball.height; ball.speed.x = 0; ball.speed.y = 0; ball.hasThrown = false; ball.hasScored = false; ball.hasBounced = false; ball.scale.x = 1; ball.scale.y = 1; ball.alpha = 1; if (ball.hitElement === '') { if (scoreMultiplier < 3) { scoreMultiplier++; } } else { scoreMultiplier = 1; } if (scoreMultiplier > 1) { hoop.multiplierLabel.setText('x' + scoreMultiplier); } else { hoop.multiplierLabel.setText(''); } ball.hitElement = ''; hoop.moveTo(Math.random() * (2048 - 1000) + 500, Math.random() * (2732 - 2000) + 1000, hoopRim); } } if (ball.x + ball.width / 2 < 0 || ball.x - ball.width / 2 > 2048) { LK.showGameOver(); } else if (ball.intersects(hoop.hoopRimGraphics) && ball.speed.y > 0 && !ball.hasScored && !ball.hasBounced && ball.x > hoop.x + hoop.leftElement.x && ball.x < hoop.x + hoop.rightElement.x) { ball.hasScored = true; score += scoreMultiplier; scoreTxt.setText(score.toString()); } }); });
===================================================================
--- original.js
+++ change.js
@@ -92,9 +92,9 @@
font: 'Impact'
});
self.multiplierLabel.anchor.set(.5, .5);
self.multiplierLabel.x = self.hoopRimGraphics.x;
- self.multiplierLabel.y = self.hoopRimGraphics.y - 250 + 20 - 80;
+ self.multiplierLabel.y = self.hoopRimGraphics.y - 250 + 20 - 180;
self.addChild(self.multiplierLabel);
});
var Game = Container.expand(function () {
var self = Container.call(this);
Basketball, cartoon style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
4:3 Simple rectangle white outline. Black background
Skull explosion
Wide Single Orange metal bar lying down Single Game Texture. In-Game asset. 2d. Pixelart. White background. Blank background. Low detail. High contrast. —ar 2:1
https://kagi.com/proxy/basketball_backboard.png?c=iNrrnnUOe99nVfDGJsYBLujiaX2Hu-zxBFRkvLEyXdRnJ8cU3RjcAYbR-o12E923qVNGy1CEGrQG87ogCD3yUarJdZYt5R03mmEMb7Jrh-8%3D blank backboard Single Game Texture. In-Game asset. 2d. Pixelart. White background. Blank background. Low detail. High contrast.
Indoor stadium seen from court Single Game Texture. In-Game asset. 2d. Pixelart. White background. Blank background. Low detail. High contrast. --no goal