Как повернуть спрайт в 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º, и поэтому он действительно остается прежним.
попробуйте сломать вашу проблему:
- вместо
transform.Rotate
попробоватьtransform.Translate(20f, 20f, 20f)
просто чтобы убедиться, что он признает входе; - используйте другое значение вместо
1.0f
, например0.1f
и30.0f
(Я думаю, что 30.0 f будет 30º, но я не конечно); - попробуйте изменить вращение на других осях
y
иz
вместоx
; - используйте альтернативное определение
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);
}