- Home /
Question by
no_mercy_percy · Oct 19, 2020 at 01:16 PM ·
screencamera-movementplayer movementmobile devices
[SOLVED] MobileGame - PlayerMovement is not working properly
In my game you are a ball on a platform and you move the ball around with a up and down button (to go forwards and backwards) and you rotate the camera with your finger movement on the screen.
The Problem is the code uses the input of your fingers on the button for the camera movement as well, therefore it is buggy.
Here is my code:
PlayerControllerScript:
if (buttonTopPressed)
{
playerRB.AddForce(focalPoint.transform.forward * 1 * speed);
}
if (buttonBotPressed)
{
playerRB.AddForce(focalPoint.transform.forward * -1 * speed);
}
...
RotateCameraScript:
var touch = Input.GetTouch(0);
if (touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
if (Input.GetTouch(0).phase == TouchPhase.Began && touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
if (touch.position.x > Screen.width / 2)
{
FirstPoint = Input.GetTouch(0).position;
xAngleTemp = xAngle;
}
}
touch = Input.GetTouch(0);
if (Input.GetTouch(0).phase == TouchPhase.Moved && touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
if (touch.position.x > Screen.width / 2)
{
SecondPoint = Input.GetTouch(0).position;
xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
this.transform.rotation = Quaternion.Euler(0, xAngle, 0.0f);
}
}
}
Comment
Best Answer
Answer by no_mercy_percy · Nov 09, 2020 at 02:42 PM
Oh yaay i figured it out by myself :)
here my new code:
if (Input.touchCount > 0)
{
var touch = Input.GetTouch(0);
Debug.Log("Test1");
if (touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
Debug.Log("Test2");
if (Input.GetTouch(0).phase == TouchPhase.Began && touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
if (touch.position.x > Screen.width / 2)
{
FirstPoint = Input.GetTouch(0).position;
xAngleTemp = xAngle;
}
}
touch = Input.GetTouch(0);
if (Input.GetTouch(0).phase == TouchPhase.Moved && touch.position.x > Screen.width / 2)
{
touch = Input.GetTouch(0);
if (touch.position.x > Screen.width / 2)
{
SecondPoint = Input.GetTouch(0).position;
xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
this.transform.rotation = Quaternion.Euler(0, xAngle * lfToggle * reversePowerInt, 0.0f);
}
}
}
else if (touch.position.x < Screen.width / 2)
{
if (Input.touchCount > 1)
{
var touch2 = Input.GetTouch(1);
Debug.Log("Test1");
if (touch2.position.x > Screen.width / 2)
{
touch2 = Input.GetTouch(1);
Debug.Log("Test2");
if (Input.GetTouch(1).phase == TouchPhase.Began && touch2.position.x > Screen.width / 2)
{
touch2 = Input.GetTouch(1);
if (touch2.position.x > Screen.width / 2)
{
FirstPoint = Input.GetTouch(1).position;
xAngleTemp = xAngle;
}
}
touch2 = Input.GetTouch(1);
if (Input.GetTouch(1).phase == TouchPhase.Moved && touch2.position.x > Screen.width / 2)
{
touch2 = Input.GetTouch(1);
if (touch2.position.x > Screen.width / 2)
{
SecondPoint = Input.GetTouch(1).position;
xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
this.transform.rotation = Quaternion.Euler(0, xAngle * lfToggle * reversePowerInt, 0.0f);
}
}
}
}
}
}