如何在Unity上限制android的触摸移动

本文关键字:android 触摸 移动 Unity | 更新日期: 2023-09-27 18:08:06

我正在制作一款面向android设备的2D赛车游戏。我已经为我的汽车编码了触摸运动。但问题是赛车超出了赛道。我如何限制汽车的移动,我的意思是我如何编写代码让我的汽车停留在屏幕上(屏幕分辨率为480*800,汽车精灵的最大位置为4.2,最小位置为-4.2)。这是我的c#汽车控制器脚本。

using UnityEngine; using System.Collections;
public class carController : MonoBehaviour {
     public float carSpeed;

     // Update is called once per frame
     void Update () {
         if (Input.touchCount == 1) {
             Touch touch = Input.touches[0];
             if(touch.position.x < Screen.width/2){
                 transform.position += Vector3.left * carSpeed * Time.deltaTime;

             }
             else if(touch.position.x > Screen.width/2){
                 transform.position += Vector3.right * carSpeed * Time.deltaTime;
             }
         }
     }

}

如何在Unity上限制android的触摸移动

直接的解决方案是使用像这样的钳形函数,因为在计算所需的移动后,您知道最大值和最小值。

 void Update () {
     if (Input.touchCount == 1) {
         Touch touch = Input.touches[0];
         if(touch.position.x < Screen.width/2){
             transform.position += Vector3.left * carSpeed * Time.deltaTime;

         }
         else if(touch.position.x > Screen.width/2){
             transform.position += Vector3.right * carSpeed * Time.deltaTime;
         }
         Vector3 position = transform.position;
         position.x = Mathf.Clamp(position.x, -4.2f, 4.2f);
         transform.position = position;
     }
 }