- Home /
2D Movement with axis?
Hey everyone, so I have a script which I am using for movement in 3D. The way that it is used is that it uses the X and Z values to move. "Horizontal" axis moves it across the X axis and the "Vertical" axis moves it across the Z (I think that's what it means). Well, I have this script for a 2D game and it works to a certain degree. Whatever object I attach this script to, I have to rotate it on the X axis by -90, and this is causing unwanted problems. Any suggestions as to how to make this script move on the X and Y axis only for 2D movement. I'm guessing that it's an easy fix that I just can't find yet. My guess is that I would have to do something with the way that it is being translated, to change the Z axis value to 0 and the Y value up, but I don't know how to do this. Below is the script I am using that is C#.
using System.Collections; using UnityEngine;
public class Cloud_Movement : MonoBehaviour { public float NormalSpeed; public float ExtraSpeed;
void Update ()
{
transform.Translate(NormalSpeed * Input.GetAxis("Horizontal") * Time.deltaTime,
0f, NormalSpeed * Input.GetAxis("Vertical") * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.LeftShift))
{
NormalSpeed += ExtraSpeed;
}
else if (Input.GetKeyUp(KeyCode.LeftShift))
{
NormalSpeed -= ExtraSpeed;
}
}
}
PS: I need it to use the Axis because I am using CrossPlatformInput for android and PC. Thanks a BUNCH!
Why dont you add the vertical movement in the y Axis in the transform.Translate function?
transform.Translate(NormalSpeed * Input.GetAxis("Horizontal") * Time.deltaTime,
NormalSpeed * Input.GetAxis("Vertical") * Time.deltaTime, 0f );
Thank you so much! This works exactly as I needed, and it wasn't a hard fix either. I knew that I had to set the Z value to 0 and bring up the Y value but I didn't know how. Thank you so much. So for anyone that happens to read this thread and doesn't know how to make it work, what you do is you get rid of the part that starts at the beginning of the Update function and replace it with what @farrukh50 put. Just delete the part and insert his code in there. Below is the finished script.
void Update ()
{
transform.Translate(NormalSpeed * Input.GetAxis("Horizontal") * Time.deltaTime,
NormalSpeed * Input.GetAxis("Vertical") * Time.deltaTime, 0f );
if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.LeftShift))
{
NormalSpeed += ExtraSpeed;
}
else if (Input.Get$$anonymous$$eyUp($$anonymous$$eyCode.LeftShift))
{
NormalSpeed -= ExtraSpeed;
}
}
Answer by AlejandroBoss10 · Apr 23, 2018 at 08:51 PM
This is the finished script. Sorry for the bad formatting. Just copy the comment above's answer. That should be formatted correctly.
void Update () { transform.Translate(NormalSpeed Input.GetAxis("Horizontal") Time.deltaTime, NormalSpeed Input.GetAxis("Vertical") Time.deltaTime, 0f ); if (Input.GetKeyDown(KeyCode.LeftShift)) { NormalSpeed += ExtraSpeed; } else if (Input.GetKeyUp(KeyCode.LeftShift)) { NormalSpeed -= ExtraSpeed; } }