pinkman Posted April 9, 2016 Share Posted April 9, 2016 Hi, most (scaffold) on my first game I've ready so far. but on one thing I have a problem. My speedometer to show the speed, but no real benefit to the game, he will only increment beautiful.So far I have an indication of speed. Example: Your Speed: 70 Mp / h.When I press the start button, the speed goes from 0 to 100 in zero seconds. That's OK for the Play-Character, but only I want that runs the display logarithmic.Example: 0 Mp/h ...., - slow up ...., - slow ...., - faster ...., - faster ...., - faster ...., - very fast ....., - very very fast ...., Highspeed Mp/h A short version as Gimp animation. I would also like to use it for the score display. As I said: No impact on the game, just look pretty.The concrete Problem: I do not know any formula for it. I tried it with a FOR loop. But the computer is too fast. The result remains 0 to 70 in zero seconds.Can anyone help me out with a minimalist, sample script? For a beginner. Thx Pinkman Link to comment Share on other sites More sharing options...
megmut Posted April 9, 2016 Share Posted April 9, 2016 if this is purely visual, then you can just increment in the update loop like so: create() { this.speedCount = 0; this.mySpeed = 0; } update() { this.speedCount+= 0.1; mySpeed = Math.round(this.calcNewSpeed(); mySpeedText.setText(mySpeed.toString()); } calcNewSpeed() { return Math.Exp(this.speedCount); } What this will do, is increment the speed counter by 0.1 every tick and use Math.Exp (exponential) : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp and then updates the actual speed then the text accordingly from this. What you should see, is that math.exp returns the following 0.1 = 1.01.... 0.2 = 1.22... 0.3 = 1.34... 0.4 = 1.49... 0.5 = 1.68.. ... 1.5 = 4.48... What you will notice, is that as the incremented value increases, the incremented speed increases faster, hence exponential. You may want to speed up, or slow the rate at which it is sped up by simply changing the this.speedCount object in the create function This should be enough to get you started VitaZheltyakov 1 Link to comment Share on other sites More sharing options...
pinkman Posted April 9, 2016 Author Share Posted April 9, 2016 5 hours ago, megmut said: This should be enough to get you started Hay megmut, yes it does!I have it still do not get to run, something I decide wrong, but I'll manage it already.Your obligatory built-fault and additional test order (one missing bracket) I've already discovered Thanks for your valuable help!When the game is finished, I will present it here. Please be patient.Best regardsPinkman Link to comment Share on other sites More sharing options...
Tom Atom Posted April 10, 2016 Share Posted April 10, 2016 You can also use Phaser.Tween to tween the variable. Then in update function just set text based on current value: create() { this.mySpeed = 0; this.add.tween(this).to({mySpeed: 100}, 1000 /* duration in ms */, Phaser.Easing.Linear.None /* easing function */, true); } update() { this.mySpeedText.text = this.mySpeed.toString(); } Then you can easily change easing function to produce different counter speeds (linear, parabolic, exponential, ...) megmut 1 Link to comment Share on other sites More sharing options...
megmut Posted April 10, 2016 Share Posted April 10, 2016 @Tom Atom this is amazing, I had no idea you could tween a variable! This will save me so much time in the future! Thanks haha Link to comment Share on other sites More sharing options...
Recommended Posts