我想通过按左箭头键或右箭头键来旋转场景中的精灵(想想小行星中的宇宙飞船)。
我已经在场景中放置了精灵并创建了一个脚本,但我不确定从那里去哪里。
我当前的脚本如下所示:
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
}
}
}
我只是在不知道将会发生什么的情况下对上述内容进行编码(并且,毫不奇怪,根本没有任何事情发生)。
非常感谢任何有关如何旋转精灵和控制旋转速度的建议。
答案 0 :(得分:5)
我现在无法用Unity尝试它,但我的猜测是它要么只旋转1º,所以你无法注意到它,或者旋转360°,所以它确实保持不变。 / p>
尝试解决您的问题:
transform.Rotate
尝试transform.Translate(20f, 20f, 20f)
只是为了确保它识别输入; 1.0f
,例如0.1f
和30.0f
(我认为30.0f会是30º,但我不确定); y
和z
上的轮换,而不是x
; Rotate(Vector3 axis, float angle)
。希望它有所帮助!
答案 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);
}