美文网首页
2019-10-11 Unity初级

2019-10-11 Unity初级

作者: DistantAdmirati | 来源:发表于2019-10-11 12:00 被阅读0次

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)

相关文章

网友评论

      本文标题:2019-10-11 Unity初级

      本文链接:https://www.haomeiwen.com/subject/hrrtmctx.html