Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 触摸输入在unity游戏中不起作用_C#_Unity3d_Unity5 - Fatal编程技术网

C# 触摸输入在unity游戏中不起作用

C# 触摸输入在unity游戏中不起作用,c#,unity3d,unity5,C#,Unity3d,Unity5,我用一艘太空船做了一个太空射击游戏,我想用手指移动它 我附上了下面的脚本,但它不工作得很好。开始时,飞船以手指移动的方式正常移动,但随着时间的推移,飞船开始对手指的轻微移动做出快速反应 [System.Serializable] public class Boundary { public float xMin, xMax, zMin, zMax; } public class Playercontroller : MonoBehaviour { public Rigidbody rb;

我用一艘太空船做了一个太空射击游戏,我想用手指移动它

我附上了下面的脚本,但它不工作得很好。开始时,飞船以手指移动的方式正常移动,但随着时间的推移,飞船开始对手指的轻微移动做出快速反应

[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)

        );

    }
}
}
[System.Serializable]
公共阶级界限
{
公共浮点数xMin,xMax,zMin,zMax;
}
公共类玩家控制器:单行为{
公共刚体;
公众浮标速度;
公共边界;
公众游戏物体射击;
公共产卵;
公共浮式灭火器;
私人浮动nextFire;
无效更新(){
if(Input.GetButton(“Fire1”)&&Time.Time>nextFire)
{
nextFire=时间。时间+燃速;
//游戏对象克隆=
实例化(快照、shotpawn.position、shotpawn.rotation);
AudioSource audio=GetComponent();
audio.Play();
}
}
无效固定更新(){
rb=GetComponent();
float moveHorizontal=Input.GetAxis(“水平”);
float moveVertical=Input.GetAxis(“垂直”);
如果(Input.touchCount>0){
moveHorizontal=Input.Touchs[0]。deltaPosition.x;
moveVertical=Input.Touchs[0]。deltaPosition.y;
Vector3移动=新Vector3(水平移动,0.0f,垂直移动);
rb.速度=运动*速度;
/*if(Input.touchCount>0&&Input.GetTouch(0.phase==TouchPhase.Moved){
Vector2 touchDeltaPosition=Input.GetTouch(0.deltaPosition);
transform.Translate(-touchDeltaPosition.x*速度,-touchDeltaPosition.y*速度,0);
}
*/
rb.position=新矢量3(
数学夹具(rb.position.x,boundary.xMin,boundary.xMax),
0.0f,
数学夹具(rb.position.z,boundary.zMin,boundary.zMax)
);
}
}
}

若你们想用手指向下移动它,为什么要更新刚体的速度?我的猜测是,速度的快速变化正在扰乱运动。另一方面,您应该移动'rb=GetComponent();'启动方法。它不适用于此格式的
输入。触摸[0]。deltaPosition
以像素为单位测量,而传统的操纵杆/鼠标输入为钳制[0-1]。检查移动虚拟操纵杆预制的标准移动资产包。但我想通过手指移动对象,而不是通过JoySticky移动对象。您需要使用@-提及来通知人们您有回复。我们不需要这样做,因为您自己的帖子会自动收到评论通知。在任何情况下:
Input.touchs[0]。deltaPosition
仍然是以像素为单位测量的,如果这不是您想要的,您需要将其转换为合理的值。如果您想将其手指向下移动,为什么要更新刚体的速度?我的猜测是,速度的快速变化正在扰乱运动。另一方面,您应该移动'rb=GetComponent();'启动方法。它不适用于此格式的
输入。触摸[0]。deltaPosition
以像素为单位测量,而传统的操纵杆/鼠标输入为钳制[0-1]。检查移动虚拟操纵杆预制的标准移动资产包。但我想通过手指移动对象,而不是通过JoySticky移动对象。您需要使用@-提及来通知人们您有回复。我们不需要这样做,因为您自己的帖子会自动收到评论通知。在任何情况下:
Input.touchs[0]。deltaPosition
仍然是以像素为单位测量的,如果这不是您想要的,则需要将其转换为合理的值。