Я использую этот код:Unity Mathf.Clamp выпуск на мобильном
void Update() {
if (SystemInfo.deviceType == DeviceType.Desktop)
{
float xMovement = Input.GetAxis("Horizontal");
this.rb.velocity = new Vector2(xMovement, 0) * this.speed;
} else if (SystemInfo.deviceType == DeviceType.Handheld)
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.position.x > this.westTouchBound && touch.position.x < this.eastTouchBound)
{
} else
{
this.speed = this.ballRigidBody.velocity.magnitude * 2.0f;
Vector3 location = this.gameCamera.ScreenToWorldPoint(touch.position);
Vector3 delta = location - this.transform.position;
Vector2 course = new Vector2(delta.x, 0.0f);
course.Normalize();
this.rb.velocity = course * speed;
}
} else
{
this.rb.velocity = new Vector2(0, 0);
}
}
float eastMax = this.gameController.screenWidth/2.0f - this.gameController.wallThickness - this.gameController.barWidth/2.0f;
float westMax = -eastMax;
float actualX = Mathf.Clamp(this.transform.position.x, westMax, eastMax);
this.transform.position = new Vector3(actualX, this.transform.position.y, this.transform.position.z);
}
На макинтоше он работает просто отлично, но на прошивке или Android баре просто отскакивает от границы, и после этого возвращается, и это выглядит ужасно. Я изучил журналы, и кажется, что проблема в физике, похоже, что ПК рассматривает ее каким-то другим способом, чем мобильный. Я попробовал много вещей, переместив код в FixedUpdate, LateUpdate, попытался изменить элементы управления, даже попытался назначить жесткую позицию, и это все еще не работает.
Это не работает. Я думаю, что проблема - это где-то в физике. – starwars25