我想知道是否有一种方法可以添加(在我的情况下)每次120度 我按下按钮A&#39;并且每次减去120度 < / strong>我从2d精灵(预制件)的 Z轴旋转推动&#39; ButtonB&#39;
这是我目前正在使用的代码,但它只会向左旋转一次,一次向右旋转:
function TouchOnScreen ()
{
if (Input.touchCount > 0)
{
var touch = Input.touches[0];
if (touch.position.x < Screen.width/2)
{
var RSpeed = 10.0f
transform.rotation = Quaternion.Lerp ( transform.rotation,Quaternion.Euler(0,0,120), Time.deltaTime*RSpeed);
Debug.Log("RotateRight");
}
else if (touch.position.x > Screen.width/2)
{
var LSpeed = 10.0f
transform.rotation = Quaternion.Lerp ( transform.rotation,Quaternion.Euler(0,0,-120), Time.deltaTime*LSpeed);
Debug.Log("RotateLeft");
}
}
}
提前致谢!
注意:如果可以,请使用unityscript,我对编码很新,而且迄今为止我所知道的仅仅是unityscript。
答案 0 :(得分:0)
从online documentation可以看出函数的签名是
static function Lerp(from: Quaternion, to: Quaternion, t: float): Quaternion;
这意味着第二个参数是对象的新旋转而不是旋转偏移
你应该使用那种
function TouchOnScreen ()
{
if (Input.touchCount > 0)
{
var touch = Input.touches[0];
if (touch.position.x < Screen.width/2)
{
var RSpeed = 10.0f
transform.rotation = Quaternion.Lerp ( transform.rotation,transform.rotation + Quaternion.Euler(0,0,120), Time.deltaTime*RSpeed);
Debug.Log("RotateRight");
}
else if (touch.position.x > Screen.width/2)
{
var LSpeed = 10.0f
transform.rotation = Quaternion.Lerp ( transform.rotation,transform.rotation + Quaternion.Euler(0,0,-120), Time.deltaTime*LSpeed);
Debug.Log("RotateLeft");
}
}
}
注意第二个参数是transform.rotation + Quaternion.Euler(0,0,120)
(当前旋转+向右偏移)
我不是团结引擎的专家(我昨天开始玩免费版本,字面意思)
答案 1 :(得分:0)
试试这个
function TouchOnScreen ()
{
if (Input.touchCount > 0)
{
var touch = Input.touches[0];
if (touch.position.x < Screen.width/2)
{
var RSpeed = 10.0f
transform.Rotate(0,0,120);
Debug.Log("RotateRight");
}
else if (touch.position.x > Screen.width/2)
{
var LSpeed = 10.0f
transform.Rotate(0,0,-120);
Debug.Log("RotateLeft");
}
}
}
如果这不起作用,请尝试使用Gameobject。我没有检查这个