如何在Unity 4.3中旋转精灵?

时间:2013-11-18 21:13:25

标签: rotation unity3d sprite

我想通过按左箭头键或右箭头键来旋转场景中的精灵(想想小行星中的宇宙飞船)。

我已经在场景中放置了精灵并创建了一个脚本,但我不确定从那里去哪里。

我当前的脚本如下所示:

 using UnityEngine;
 using System.Collections;

 public class RotateLeftRight : MonoBehaviour {

    public float speed = 1.0f;
    public string axisName = "Horizontal";

    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void Update () {

        if(Input.GetKeyDown(KeyCode.LeftArrow)) {
            // left
            transform.Rotate(-1.0f, 0.0f, 0.0f);  // does nothing, just a bad guess
        }

        if(Input.GetKeyDown(KeyCode.RightArrow)) {
            // right
            transform.Rotate(1.0f, 0.0f, 0.0f);  // does nothing, just a bad guess
        }

     }
 }

我只是在不知道将会发生什么的情况下对上述内容进行编码(并且,毫不奇怪,根本没有任何事情发生)。

非常感谢任何有关如何旋转精灵和控制旋转速度的建议。

2 个答案:

答案 0 :(得分:5)

我现在无法用Unity尝试它,但我的猜测是它要么只旋转1º,所以你无法注意到它,或者旋转360°,所以它确实保持不变。 / p>

尝试解决您的问题:

  1. 而不是transform.Rotate尝试transform.Translate(20f, 20f, 20f)只是为了确保它识别输入;
  2. 使用其他值代替1.0f,例如0.1f30.0f(我认为30.0f会是30º,但我不确定);
  3. 尝试更改其他轴yz上的轮换,而不是x;
  4. 使用替代定义Rotate(Vector3 axis, float angle)
  5. 希望它有所帮助!

答案 1 :(得分:3)

@Sailing柔道,如果你想像轮子一样旋转它,这里是最好的答案。再次尝试观察代码,而不是将X轴作为参数放置/更改,而是将值放在Z轴上。在圆形旋转中改变x或y轴最终像翻转硬币一样。观察并再试一次。

   if(Input.GetKey(KeyCode.LeftArrow)) {
        // Clockwise
        transform.Rotate(0, 0, -3.0f); // --> Instead of "transform.Rotate(-1.0f, 0.0f, 0.0f);"
    }

    if(Input.GetKey(KeyCode.RightArrow)) {
        // Counter-clockwise
        transform.Rotate(0, 0, 3.0f); // --> Instead of transform.Rotate(1.0f, 0.0f, 0.0f);
    }