几个小时前我问了一个问题,但是我认为这个问题并没有清楚地告诉你我想要什么。因此,我再次用一些图片发表了它。 请仔细查看图片。spaceship image with rotation and position
所以我的问题是。 [问题1]:当我按下向左箭头按钮时,应改变船的旋转方向,如图片中的圆圈(3)所示;当我释放向左箭头按钮时,船舶应旋转回以圆圈显示的旋转方向( 1)。
[问题2]:当我按下向右箭头按钮时,应改变船的旋转方向,如图片中的圆圈(2)所示,当我释放向右箭头按钮时,应返回到显示其旋转方向圈(1)。
transform.position += transform.forward * Time.deltaTime * 10f;
if(Input.GetKey(KeyCode.LeftArrow))
{
//code
}
if(Input.GetKey(KeyCode.RightArrow))
{
//code
}
请帮助我,我一直呆在那里:(
答案 0 :(得分:0)
您是否已经查看了Unity提供的太空射击教程? https://unity3d.com/learn/tutorials/projects/space-shooter-tutorial/moving-player?playlist=17147
它是在旧版本的Unity(Unity版本4)中编码的,但是他们检查以确保它与新版本(从今天的Unity版本5.1开始)兼容。如果链接更改,我已经复制了他们在视频中使用的代码。
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Boundary
{
public float xMin, xMax, zMin, zMax;
}
public class PlayerController : MonoBehaviour
{
public float speed;
public float tilt;
public Boundary boundary;
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rigidbody.velocity = movement * speed;
rigidbody.position = new Vector3
(
Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
);
rigidbody.rotation = Quaternion.Euler (0.0f, 0.0f, rigidbody.velocity.x * -tilt);
}
}
rigidBody.rotation
适用于您所获得的图片中所示的倾斜度/倾斜度,但当前不会更改船的正向旋转。按下左右箭头键会影响刚体的速度并引起倾斜,一旦松开就会恢复到船的中心位置。