Reputation: 25
private void FixedUpdate()
{
if (Input.GetMouseButton(0) || isStart)
{
isStart = true;
transform.Translate(new Vector3(Input.mousePosition.x * Time.fixedDeltaTime * 0.05f, 0, speed * Time.fixedDeltaTime));
}
}
When the game starts, when I click left on the screen, the object moves to the right instead of to the left. When I right click, it goes right again, but faster. As far as I understand, it considers the leftmost part of the screen as the middle, but why?
Upvotes: 0
Views: 116
Reputation: 609
Input.mousePosition.x
is a value that goes from 0 (leftmost) to Screen.width
(rightmost) - see more on documentation.
This means that when you click on the left side your value is lower than when you click on the right side, this explains the speed change.
The range [0. Scree.width
] is always positive, which means that your movement will always be in the same direction, this explains the object goes just to one side.
A simple solution is to divide your Screen.width
by 2 and create a direction based on it.
var direction = Input.mousePosition.x < (Screen.width * .5f) ? -1 : 1;
transform.Translate(new Vector3(direction * speed * Time.fixedDeltaTime, 0, speed * Time.fixedDeltaTime));
Upvotes: 1