For the first week, I wanted to focus on the Procedural Room Generation aspect of Lament. Therefore, for this week I only created a simple Player gameobject.
To start a created a 2D square sprite gameobject and named it ‘Player’. I gave the player a RigidBody 2D component and a Box Collider 2D. These component will help me in the future when it comes to physics, checks and movement etc.
Moving the player
Firstly, I created references to a Vector 2 data structure called ‘movement’; the players RigidBody2D called ‘rb’ and a public float variable called moveSpeed.
Using the RigidBody2D component, I can alter its position (affectively teleporting it) using the RigidBody2D.MovePosition function. This method of moving the player does not require forces, this gives the player controller a responsive and smooth feeling. Also, not using forces allows me to use forces for other features of the game, things like a dash or knockback etc. Furthermore, if I had used forces to move the player, I would need to create a drag/deceleration feature to prevent the player from sliding.
However, as this method for moving the player uses the RigidBody2D component, all of the logic needs to be put in the FixedUpdate( ) method and not the Update( ). This is to ensure that all of the physics updates that are made are consistent throughout gameplay. Additionally, in the MovePosition function, its movement has to be multiplied by Time.fixedDeltaTime to ensure that physics updates are made consistently regardless of framerate, making all systems run the game equally.
In order to get input from the player, I used Input.GetAxisRaw( ) functions, this returns the value of the player pressing WASD for both of the 2D axises. This is then multiplied by the moveSpeed int and Time.fixedDeltaTime to move the player.
