本节要点
#1.变换组件运动特点
使用 Transform.Translate()方法移动物体的位置,特点如下:
①移动的物体会“穿透”场景中其他的物体模型;
②移动的物体不会受重力影响(到达场景边缘外,不会下落)。
#2.刚体组件简介
1.刚体简介
刚体:Rigidbody,属于物理类组件。
作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意
味着可以像现实中的物体一样运动。
2.给物体添加刚体组件
选中游戏物体-->菜单 Component-->Physics-->Rigidbody
#3.刚体组件属性
1.Mass[质量]
设置物体的质量,也就是重量。质量单位是 KG。
2.Drag[阻力]
空气阻力,0 表示无阻力,值很大时物体会停止运动。
3.Angular Drag[角阻力]
受到扭曲力时的空气阻力,0 表示无阻力,值很大时物体会停止运动。
4.Use Gravity[使用重力]
是否使用重力。
#4.使用刚体移动物体
1.相关方法
Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
使用刚体移动物体,物体是根据世界坐标系的方向移动的。
使用刚体移动物体,物体会触发物理相关的事件。
2.参数
MovePosition 中的 Vector3 要使用“当前位置”+ 方向 的方式。
Transform.Position:属性 当前物体的位置。
3.特点
使用刚体移动物体,特点如下:
①会于场景中的模型物体发生碰撞;
②会受重力影响(到达场景边缘外,会下落)。
场景视图
关键代码
InputTest
public class InputTest : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//键盘的值
//按下A键持续返回true
if (Input.GetKey(KeyCode.A))
{
Debug.Log("Get...........A");
}
//按下A键瞬间返回true
if (Input.GetKeyDown(KeyCode.A))
{
Debug.Log("Getkeydown...........A Down!");
}
//松开A键瞬间返回true
if (Input.GetKeyUp(KeyCode.A))
{
Debug.Log("Getkeyup..............A Up!");
}
//鼠标的值
//获取鼠标的按键,持续返回true
if (Input.GetMouseButton(0))
{
Debug.Log("Mouse Left");
}
//点击鼠标按键瞬间返回true
if (Input.GetMouseButtonDown(0))
{
Debug.Log("Left Down!");
}
//松开鼠标瞬间返回true
if (Input.GetMouseButtonUp(0))
{
Debug.Log("Left Up!");
}
}
}
StudentMove
public class StudentMove : MonoBehaviour {
private Transform m_Transform;
// Use this for initialization
void Start () {
//获取相应组件的引用,声明同类型字段去接收
m_Transform=gameObject.GetComponent<Transform>();
}
// Update is called once per frame
void Update () {
//移动物体位置的关键语句
// m_Transform.Translate(Vector3.forward*0.1f,Space.World);
//参数1:Vector3移动物体的三维变量(枚举类型),表示x,y,z;Space参数2:移动物体的坐标系(枚举类型)自身坐标系或世界坐标系
//0.1f 表示将当前速度下调到原来十分之一;切记加上f
//获取相应键控制方向;w a s d
if (Input.GetKey(KeyCode.W))
{
m_Transform.Translate(Vector3.forward*0.1f,Space.World);//往前
}
if (Input.GetKey(KeyCode.S))
{
m_Transform.Translate(Vector3.back * 0.1f, Space.World);//向后
}
if (Input.GetKey(KeyCode.A))
{
m_Transform.Translate(Vector3.left * 0.1f, Space.World);//向左
}
if (Input.GetKey(KeyCode.D))
{
m_Transform.Translate(Vector3.right * 0.1f, Space.World);//向右
}
}
}