Object that is moving left or right looks like it is moving at a diagonal
I have this issue where when my "player" object moves to the left or right, it looks like it is moving in a diagonal. I do have a camera that is always moving up so i believe this is the issue but i don't know what to do to make it actually look like it is just going left or right. Here is my code for the player movement and the camera.
using UnityEngine;
public class touchMovement : MonoBehaviour {
public float moveSpeed = 150f;
public Rigidbody2D rb;
public Vector2 test;
private Vector2 input = Vector2.up;
public float maxTime = 0.5f;
public float minDistance = 50f;
float startTime;
float endTime;
Vector3 startPos;
Vector3 endPos;
float swipeDistance;
float swipeTime;
void FixedUpdate()
{
swipe();
playerMoment();
}
// Update is called once per frame
void Update ()
{
if(Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
startTime = Time.time;
startPos = touch.position;
}
else if (touch.phase == TouchPhase.Ended)
{
endTime = Time.time;
endPos = touch.position;
swipeDistance = ((endPos - startPos).magnitude);
swipeTime = endTime - startTime;
if(swipeTime < maxTime && swipeDistance > minDistance)
{
swipe();
}
}
}
}
void swipe()
{
Vector2 distance = endPos - startPos;
if(Mathf.Abs(distance.x) > Mathf.Abs(distance.y))
{
if (distance.x > 0)
{
if (input != Vector2.left)
{
input = Vector2.right;
}
}
else if (distance.x < 0)
{
if (input != Vector2.right)
{
input = Vector2.left;
}
}
}
else if (Mathf.Abs(distance.x) < Mathf.Abs(distance.y))
{
if(distance.y > 0)
{
if (input != Vector2.down)
{
input = Vector2.up;
}
}
else if(distance.y < 0)
{
if (input != Vector2.up)
{
input = Vector2.down;
}
}
}
}
private void playerMoment()
{
rb.velocity = ((input * moveSpeed) * Time.deltaTime);
}
}
Camera Movement
using UnityEngine;
public class CameraControl : MonoBehaviour {
private Vector3 lastCameraPosition;
private float distanceToMove = 1.5f;
void Start()
{
lastCameraPosition = transform.position;
}
void Update()
{
transform.position = new Vector3(transform.position.x, transform.position.y + distanceToMove *
Time.deltaTime, transform.position.z);
lastCameraPosition = transform.position;
}
}
Can you upload a video showing the problem? It would be much easier to diagnose if we can see the problem.
Here is a link to a Gayzo GIF for it. https://gyazo.com/0c7325f3a5e38d301f26c78a82afd515
As you can see, when i move left, it looks like i am moving in a diagonal because the camera is moving up.
Your answer
![](https://koobas.hobune.stream/wayback/20220612115742im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to switch between Time.unscaledDeltaTime and Time.deltatime after Time.timeScale? 0 Answers
Google Cardboard on Unity: Why when I put in the scene "GvrEditorEmulator" the game doesn't go? 0 Answers
Hi I'm trying to build cardboard APP i have an question 0 Answers
camera movment 0 Answers
Crouch in VR, moving down the camera C# 0 Answers