- Home /
problem with vector3.right and up
I'm trying to use this code to have the "s" key move the player down and the "d" key move the player to the right:
var number:float=0;
function Update() {
HorizontalTranslate("d",1,5,8,Vector3.right); HorizontalTranslate("s",-1,5,8,Vector3.up); }
function HorizontalTranslate(input,value,damp,speed,direction){ var hvalue=0; if(Input.GetKey(input)) { hvalue =hvalue+value; }
number = Mathf.Lerp(number, hvalue, Time.deltaTime*damp);
transform.Translate(direction * number*Time.deltaTime*speed, Space.Self); }
problem is that when I press the keys the object moves diagonally rather than straight to the right or down. My guess is that somehow both Vector3.up and Vector3.right are being called at the same time, but i'm not quite sure why it's doing it. Any ideas how to fix this? thanks.
Answer by Loius · Nov 14, 2010 at 01:44 AM
It's doing that because you're pressing both keys.
You need an if-else in there to prevent checking one if the other is pressed, or you need to cancel the other direction of movement by storing a "desired movement" and only allowing one axis of that movement to be non-zero.
Answer by Scribe · Nov 14, 2010 at 12:00 PM
if you place this script on the object you want to move if will do as you want and s=down, d=right:
function Update () {
//moves down when s is pressed/held
if (Input.GetKey (KeyCode.S)) transform.Translate(0, -1, 0);
//moves right when d is pressed/held
if (Input.GetKey (KeyCode.D)) transform.Translate(0, 0, 1);
}
Your answer
Follow this Question
Related Questions
How to prevent Z axis rotation ? 0 Answers
Input.mousePosition returns coordinates as integers. 1 Answer
Difference between Vector.up and transform.up 2 Answers
Rotating a Vector3 in Instantiation 1 Answer
Finding difference between gameObject's x coordinate according to one object's transform 1 Answer