bergben Posted August 8, 2018 Share Posted August 8, 2018 Hey guys! I am trying to find the best way to implement the following: I want to create something like an .io game like slither.io and I want nearly the same movement behavior like there using Matter Physics. So the most basic way would be: let angle = Phaser.Math.Angle.Between(fromX, fromY, toX, toY); this.gameObject.setRotation(angle); this.physics.moveTo(this.gameObject, toX, toY, gameConfigs.movementSpeed); but this results in a few problems. The gameObject (player) should ne be able to rotate immediately, there should be a rotation split into a few steps to create some sort of a maximal rotation speed. This should also make a 180° turn impossible. There should always be a maximal speed in which turning is possible. Now to do this I thought of the following: 1. On mouse move save the current cursor position as the current "goal" 2. rotate towards that "goal" in every update cycle like 2 degrees at a time 3. move the gameObject forward at a constant speed Now this would include a lot of calculations for the angle in every update cycle, so I wanted to ask if any of you can think of a better, cleaner solution? Performance is key... Thanks! Link to comment Share on other sites More sharing options...
samme Posted August 9, 2018 Share Posted August 9, 2018 https://codepen.io/samme/pen/JBwWLN?editors=0010 Link to comment Share on other sites More sharing options...
Recommended Posts