我正在为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;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句