【问题标题】:Rotate a GameObject with Touch使用触摸旋转游戏对象
【发布时间】:2015-02-13 16:07:56
【问题描述】:

我在下面有这段代码,可以在键盘上使用,但不能在触控下使用。

Quaternion rot = transform.rotation;  float z = rot.eulerAngles.z;      
z-= Input.GetAxis("Horizontal") * rotSpeed * Time.deltaTime;   
rot =    Quaternion.Euler( 0, 0, z );   
transform.rotation = rot;

我需要上面的代码在触摸上工作,怎么做?

【问题讨论】:

    标签: unity3d rotation


    【解决方案1】:

    也许您应该阅读用于 Unity Scripting http://docs.unity3d.com/ScriptReference/Input.html 输入的 Api

    您可以使用 getTouch 方法来旋转对象 这里是文档

    http://docs.unity3d.com/ScriptReference/Input.GetTouch.html

    您可以使用 delta 进行拖动或使用 Position 来旋转对象

    所以它会像这样不确定它是否应该与拖动一起工作

     if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
         Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
         z-=touchDeltaPosition.x * rotSpeed * Time.deltaTime;   
         rot =    Quaternion.Euler( 0, 0, z );   
      }
    

    【讨论】:

      【解决方案2】:

      它应该与上面几乎相同,但我们使用 y 轴代替水平轴,而不是水平轴,此代码也用于拖动

      if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
           Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
      Vector3 pos = transform.position; 
      Vector3 velocity = new Vector3(0, touchDeltaPoition.y * maxSpeed * Time.deltaTime, 0);
      pos += rot * velocity;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多