美文网首页
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