通过触摸旋转游戏对象

问题描述 投票:0回答:2

我有下面的代码,可以在键盘中使用,但不适用于触摸。

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;

我需要上面的代码可以在触摸上运行,该怎么做?

unity-game-engine rotation unityscript
2个回答
2
投票

也许你应该阅读 Unity 脚本输入的 Api http://docs.unity3d.com/ScriptReference/Input.html

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

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

您可以使用增量来拖动或使用位置来旋转对象

所以就像这样不确定它的工作原理它应该与拖动一起工作

 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 );   
  }

0
投票

它应该与上面几乎相同,但是我们使用 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.