1.键盘和鼠标的输入
键盘:getkey(keycode.A) //返回值是布尔值 所以在使用的时候一般是 if (getkey(keycode.A)) {执行动作}
getkeydown(keycode.A)和getkeyup(keycode.A)
鼠标同理:GetMouseButton(int.0)鼠标左键
以上的keycode和int是enum的值
2.目前的两种移动方法——transform组件移动和rigidbody刚体组件移动
在组件移动之前,需要对该组件进行实例化
private transform m_transform; //实例化transform组件对象
void start(){
m_transform = gameObject.GetComponent<Transform> (); //这一步是用这个对象接收某个组件。gameobject是游戏物体,getcomponent即获取组件,<>里面即是获取的什么组件
}
获取完组件之后,就可以通过上面鼠标键盘输入来移动物体
void Update () {
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);}
}
移动物体的几种方式:
第一种,
transform变换组件移动物体:实例化对象.translate(vector3,space)
实例化对象.rotate(vector3,Float) vector3确定轴向 float确定角度
//这里的vector3和space都是enum类型 vector3包括forward,left,right,back space包括self和world,分别对应自身的坐标和世界坐标
举例说明就是m_Transform.Translate (Vector3.right * 0.1f, Space.World)
通过space的self和world将变换组件移动分为两种方式:自身坐标前后左右移动和世界坐标前后左右移动
第二种,
Rigidbody刚体组件移动物体:实例化对象.moveposition(实例化对象.position+vector3)和组件不同的是刚体在移动中需要先获取自身的位置
举例说明:m_rigidbody.moveposition (m_Transform.position + Vector3.right * 0.2f)
刚体的另外两种:AddForce(Vector3, ForceMode) 按世界坐标系给一个力运动
AddRelativeForce(Vector3,ForceMode) 按刚体坐标系给一个力运动
vector3仍然是前后左右的枚举,这里的forcemode的枚举类型包括:
通常应该是用force
举例说明:m_rigidbody.addforce(vector3.right,forcemode.force)
3.两种监测——碰撞监测和触发监测
碰撞监测:Collision碰撞
直接从代码看:void OnCollisionEnter(Collision coll) //OnCollisionEnter(Collision 名字) 开始碰撞时
{Debug.Log ("Enter " + coll.gameObject.name); } //名字.gameobject.name
void OnCollisionExit(Collision coll) // 碰撞离开时
void OnCollisionStay(Collision coll) //正在碰撞时
触发监测:触发
同理:void OnTriggerEnter(Collider coll)
{Debug.Log ("Cube Enter:" + coll.gameObject.name);}
void OnTriggerExit(Collider coll)
void OnTriggerStay(Collider coll)
网友评论