User prompt
in runningUp2, legs and foots are interverted. they should not, just change the other leg vertical position
Code edit (1 edits merged)
Please save this source code
User prompt
in runningUp1 and runningUp2, arms and hands should not be raised. No one run with hands up!
User prompt
restore idlePosture when reaching target positin
Code edit (1 edits merged)
Please save this source code
User prompt
currently movement is fast when target is far and slow when close to the target => make movement more linear
Code edit (3 edits merged)
Please save this source code
User prompt
goToPoint, alternate beween runningUp1 and runningUp2 postures while targetPoint is not reached
User prompt
in updatePosition, clear targetPosition when player is close enough
User prompt
use runningUp1 and runningUp2 postures while running
Code edit (6 edits merged)
Please save this source code
User prompt
set x,y of player at center of the screen initially
Code edit (1 edits merged)
Please save this source code
User prompt
add a new updatePosition function in Player class to move the player to the current targetPoint
Code edit (3 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of undefined (setting 'updatePosture')' in or related to this line: 'self.updatePosture = function () {' Line Number: 232
User prompt
move updatePosture inside Player class
Code edit (1 edits merged)
Please save this source code
User prompt
Fix so that clicking does not change the targetPosition (ie: player animation state) but it set the player destination (new property)
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'this.head.x += (this.targetPosition.head.x - this.head.x) * speed;' Line Number: 231
User prompt
Now when user click somewhere on the screen, make the player run to that point
Code edit (5 edits merged)
Please save this source code
User prompt
That's good. Now create 2 new positions named runningUp1 and runningUp2 that will represent the player running to the top of the screen
User prompt
in fact that's not the right way to do an animation: Set position should store the new position in a targetPosition property, then in a new updatePosition function called every tick the positions should be updated
Code edit (1 edits merged)
Please save this source code
/**** * Classes ****/ // Assets will be automatically created based on usage in the code. // Ball class for the basketball var Ball = Container.expand(function () { var self = Container.call(this); var ballGraphics = self.attachAsset('basketball', { anchorX: 0.5, anchorY: 0.5 }); self.speedY = 0; self.gravity = 0.5; self.isShot = false; self.shoot = function (power, angle) { self.speedY = -power; self.isShot = true; }; self.update = function () { if (self.isShot) { self.y += self.speedY; self.speedY += self.gravity; } }; self.reset = function () { self.x = 1024; // Center X self.y = 2500; // Starting Y self.isShot = false; self.speedY = 0; }; }); // Hoop class for the basketball hoop var Hoop = Container.expand(function () { var self = Container.call(this); var hoopGraphics = self.attachAsset('hoop', { anchorX: 0.5, anchorY: 0.5 }); self.setPosition = function () { self.x = 1024; // Center X self.y = 500; // Hoop Y position }; }); // Player class for the player var Player = Container.expand(function () { var self = Container.call(this); self.head = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.8, scaleY: 1 }); self.rightArm = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 1.5 }); self.rightHand = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.75, scaleY: 0.5 }); self.leftArm = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 1.5 }); self.leftHand = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.75, scaleY: 0.5 }); self.trunk = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 2.0 }); self.rightLeg = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 2 }); self.rightFoot = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.75, scaleY: 0.5 }); self.leftLeg = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.5, scaleY: 2 }); self.leftFoot = self.attachAsset('bodyPart', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.75, scaleY: 0.5 }); self.updatePosture = function () { var speed = 0.1; // Speed of transition if (!this.targetPosture) { return; } //this.x += (this.targetPosture.x - this.x) * speed; //this.y += (this.targetPosture.y - this.y) * speed; if (this.targetPosture && this.targetPosture.head) { this.head.x += (this.targetPosture.head.x - this.head.x) * speed; } this.head.y += (this.targetPosture.head.y - this.head.y) * speed; this.rightArm.x += (this.targetPosture.rightArm.x - this.rightArm.x) * speed; this.rightArm.y += (this.targetPosture.rightArm.y - this.rightArm.y) * speed; this.rightHand.x += (this.targetPosture.rightHand.x - this.rightHand.x) * speed; this.rightHand.y += (this.targetPosture.rightHand.y - this.rightHand.y) * speed; this.leftArm.x += (this.targetPosture.leftArm.x - this.leftArm.x) * speed; this.leftArm.y += (this.targetPosture.leftArm.y - this.leftArm.y) * speed; this.leftHand.x += (this.targetPosture.leftHand.x - this.leftHand.x) * speed; this.leftHand.y += (this.targetPosture.leftHand.y - this.leftHand.y) * speed; this.trunk.x += (this.targetPosture.trunk.x - this.trunk.x) * speed; this.trunk.y += (this.targetPosture.trunk.y - this.trunk.y) * speed; this.rightLeg.x += (this.targetPosture.rightLeg.x - this.rightLeg.x) * speed; this.rightLeg.y += (this.targetPosture.rightLeg.y - this.rightLeg.y) * speed; this.rightFoot.x += (this.targetPosture.rightFoot.x - this.rightFoot.x) * speed; this.rightFoot.y += (this.targetPosture.rightFoot.y - this.rightFoot.y) * speed; this.leftLeg.x += (this.targetPosture.leftLeg.x - this.leftLeg.x) * speed; this.leftLeg.y += (this.targetPosture.leftLeg.y - this.leftLeg.y) * speed; this.leftFoot.x += (this.targetPosture.leftFoot.x - this.leftFoot.x) * speed; this.leftFoot.y += (this.targetPosture.leftFoot.y - this.leftFoot.y) * speed; }; self.setPosture = function (newPosture) { self.targetPosture = newPosture; }; self.goToPoint = function (newPosition) { self.targetPoint = newPosition; }; self.updatePosition = function () { if (self.targetPoint) { var speed = 0.1; // Speed of transition self.x += (self.targetPoint.x - self.x) * speed; self.y += (self.targetPoint.y - self.y) * speed; } }; }); /**** * Initialize Game ****/ // Player positions var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ /******* Retro Basket ******** A retro basketball game. It's a one vs one basketball game. Ball is lanched in the middle. Players must run and catch it, then throw it in the oppoent hoop. *****************************/ var idlePosture = { x: 1024, // Center X y: 2000, // Player Y position head: { x: 0, y: -160 }, rightArm: { x: 110, y: -20 }, rightHand: { x: 125, y: 30 }, leftArm: { x: -110, y: -20 }, leftHand: { x: -120, y: 30 }, trunk: { x: 0, y: 0 }, rightLeg: { x: 37.5, y: 150 }, rightFoot: { x: 50, y: 250 }, leftLeg: { x: -37.5, y: 150 }, leftFoot: { x: -50, y: 250 } }; var runningUp2 = { x: 1024, // Center X y: 2000, // Player Y position head: { x: 0, y: -160 }, rightArm: { x: 80, y: -130 }, rightHand: { x: 80, y: -230 // Hand at the top of the arm }, leftArm: { x: -90, y: -100 }, leftHand: { x: -90, y: -200 // Hand at the top of the arm }, trunk: { x: 0, y: 0 }, rightLeg: { x: -50, y: 150 }, rightFoot: { x: -60, y: 250 }, leftLeg: { x: 50, y: 100 }, leftFoot: { x: 60, y: 200 } }; var runningUp1 = { x: 1024, // Center X y: 2000, // Player Y position head: { x: 0, y: -160 }, rightArm: { x: 90, y: -100 }, rightHand: { x: 90, y: -200 // Hand at the top of the arm }, leftArm: { x: -80, y: -130 }, leftHand: { x: -80, y: -230 // Hand at the top of the arm }, trunk: { x: 0, y: 0 }, rightLeg: { x: 50, y: 100 }, rightFoot: { x: 60, y: 200 }, leftLeg: { x: -50, y: 150 }, leftFoot: { x: -60, y: 250 } }; var throwingPosture = { x: 1024, // Center X y: 2000, // Player Y position head: { x: 0, y: -160 }, rightArm: { x: 100, y: -120 }, rightHand: { x: 100, // Set the right hand at the top of the right arm y: -220 // Set the right hand at the top of the right arm }, leftArm: { x: -100, y: -120 }, leftHand: { x: -100, // Set the left hand at the top of the left arm y: -220 // Set the left hand at the top of the left arm }, trunk: { x: 0, y: 0 }, rightLeg: { x: 37.5, y: 150 }, rightFoot: { x: 50, y: 250 }, leftLeg: { x: -37.5, y: 150 }, leftFoot: { x: -50, y: 250 } }; var player = game.addChild(new Player()); player.setPosture(idlePosture); var ball = game.addChild(new Ball()); ball.reset(); var hoop = game.addChild(new Hoop()); hoop.setPosition(); var score = 0; var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff" }); LK.gui.top.addChild(scoreTxt); game.on('down', function (obj) { var pos = obj.event.getLocalPosition(game); // Determine if the click is above or below the current player position to choose the running animation var newPosition = pos.y < player.y ? runningUp1 : runningUp2; player.setPosture(newPosition); // Set the destination for the player to run to player.destination = { x: pos.x, y: pos.y }; }); var idle = true; var changePostureTimer = LK.setInterval(function () { if (idle) { player.setPosture(throwingPosture); idle = false; } else { player.setPosture(idlePosture); idle = true; } }, 1000); LK.on('tick', function () { ball.update(); player.updatePosture(); // Check if ball intersects with hoop and is moving downwards if (ball.intersects(hoop) && ball.speedY > 0) { score += 1; scoreTxt.setText(score.toString()); ball.reset(); } // Reset ball if it goes off-screen if (ball.y > 2732) { ball.reset(); } });
===================================================================
--- original.js
+++ change.js
@@ -108,10 +108,10 @@
var speed = 0.1; // Speed of transition
if (!this.targetPosture) {
return;
}
- this.x += (this.targetPosture.x - this.x) * speed;
- this.y += (this.targetPosture.y - this.y) * speed;
+ //this.x += (this.targetPosture.x - this.x) * speed;
+ //this.y += (this.targetPosture.y - this.y) * speed;
if (this.targetPosture && this.targetPosture.head) {
this.head.x += (this.targetPosture.head.x - this.head.x) * speed;
}
this.head.y += (this.targetPosture.head.y - this.head.y) * speed;
@@ -139,8 +139,15 @@
};
self.goToPoint = function (newPosition) {
self.targetPoint = newPosition;
};
+ self.updatePosition = function () {
+ if (self.targetPoint) {
+ var speed = 0.1; // Speed of transition
+ self.x += (self.targetPoint.x - self.x) * speed;
+ self.y += (self.targetPoint.y - self.y) * speed;
+ }
+ };
});
/****
* Initialize Game