如何在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;
}
}
}
}
直接的解决方案是使用像这样的钳形函数,因为在计算所需的移动后,您知道最大值和最小值。
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;
}
}