Как повернуть спрайт в Unity 4.3?

Я хотел бы повернуть спрайт на сцене, нажав клавиши со стрелками влево или вправо (подумайте о космическом корабле в астероидах).

Я поместил спрайт, о котором идет речь, на сцену и создал сценарий, но не совсем уверен, куда идти оттуда.

мой скрипт выглядит так:

 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 ответов


Я не могу попробовать это с Unity прямо сейчас, но я предполагаю, что он либо вращается только на 1º, поэтому вы не можете его заметить, либо вращается на 360º, и поэтому он действительно остается прежним.

попробуйте сломать вашу проблему:

  1. вместо transform.Rotate попробовать transform.Translate(20f, 20f, 20f) просто чтобы убедиться, что он признает входе;
  2. используйте другое значение вместо 1.0f, например 0.1f и 30.0f (Я думаю, что 30.0 f будет 30º, но я не конечно);
  3. попробуйте изменить вращение на других осях y и z вместо x;
  4. используйте альтернативное определение Rotate(Vector3 axis, float angle).

надеюсь, что это помогает!


@Sailing Judo, вот лучший ответ, если вы хотите повернуть его, как колесо. Попробуйте снова наблюдать за своим кодом и вместо того, чтобы помещать/изменять ось 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);
    }