我用太空船做了太空射击游戏,我想用手指移动。
我附上了下面的脚本,但是效果不好。在开始时,船只通过手指移动正常移动,但随着时间的推移,宇宙飞船开始对甚至轻微的手指移动做出非常快速的反应。
[System.Serializable]
public class Boundary
{
public float xMin, xMax, zMin, zMax;
}
public class Playercontroller : MonoBehaviour {
public Rigidbody rb;
public float speed;
public Boundary boundary;
public GameObject shot;
public Transform shotSpawn;
public float fireRate;
private float nextFire;
void Update(){
if(Input.GetButton("Fire1") && Time.time>nextFire)
{
nextFire = Time.time + fireRate;
//GameObject clone=
Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
AudioSource audio = GetComponent<AudioSource> ();
audio.Play ();
}
}
void FixedUpdate () {
rb = GetComponent<Rigidbody> ();
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
if (Input.touchCount >0) {
moveHorizontal = Input.touches [0].deltaPosition.x;
moveVertical = Input.touches [0].deltaPosition.y;
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.velocity = movement * speed;
/* if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
transform.Translate(-touchDeltaPosition.x * speed, -touchDeltaPosition.y * speed, 0);
}
*/
rb.position = new Vector3 (
Mathf.Clamp (rb.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (rb.position.z, boundary.zMin, boundary.zMax)
);
}
}
}