Trick to move a game object smoothly to left and right
Hello, So I am make a space game where my player game object (Spaceship) is continuously moving up and then the player can press left or right to shift the object to the left and vice versa to avoid obstacles. I am able to make the spaceship to actually move from left and right but the problem is that, it does not move smoothly. Its like teleporting which doesnt make the movement feel real. This is the code that I used for the spaceship object.
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
Rigidbody2D rb;
public float gameSpeed;
bool moveLeft, moveRight;
// Use this for initialization
void Start ()
{
rb = GetComponent <Rigidbody2D> ();
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyUp (KeyCode.RightArrow))
{
moveRight = true;
}
else if (Input.GetKeyUp (KeyCode.LeftArrow))
{
moveLeft = true;
}
}
void FixedUpdate ()
{
MovePlayer ();
}
//Function to move the player gameobject
void MovePlayer ()
{
rb.velocity = (new Vector2 (0, 1f)) * gameSpeed; //Continuously move player object up
//Move object to left as it keeps on going up
if (moveLeft)
{
rb.MovePosition (new Vector2 ((transform.position.x - 1.4f), transform.position.y));
moveLeft = false;
}
//Move object to Right as it keeps on going up
else if (moveRight)
{
rb.MovePosition (new Vector2 ((transform.position.x + 1.4f), transform.position.y));
moveRight = false;
}
}
}
I have tried to used the transform.position
to do that but I still get the same movement. I have heard about lerp
and MoveTowards
which kinda seems complicated. Could Anyone give me an idea or a sample code on i can achieve this smooth movement from left to right. And also I would like to be able to rotate the spaceship a little bit towards the position it is moving toward to make it more realistic. Any help is appreciated. Thank you. @lineupthesky @Eric5h5 @aldonaletto
Your answer
Follow this Question
Related Questions
MoveTowards and Lerp not working 1 Answer
Weapon does't meet the target position when using IK 1 Answer
Replace Vector3.Lerp with something equivalent for rigidbody2D !! 1 Answer
Move, teleport, move again! (one frame) 0 Answers
Simple Advice needed - Lerp, SmoothDamp, SmoothStep...... etc. 2 Answers