Unity 3D游戏开发 - U3D入门 | 疯狂教室案例开发(上)

模型旋转实现开门效果

  • 模型中心点
    • 模型身上坐标轴的中心点,即为模型的中心点。
    • 模型的位置、旋转、缩放都是相对于模型的中心点来进行变化的。
  • 改变模型中心点
    • 创建一个空物体,创建父子关系,通过父物体控制子物体,也就间接改变了模型的中心点。
  • 中心点工具
    • Center:当选中两个模型,设置为 “Center”,模型组的中心点就在两个模型的中间中心位置。
    • Pivot:当选中两个模型,设置为 “Pivot”,模型组的中心点就在后选中的模型的中心点位置

  • 使用键盘按键实现开关门
    • 使用 Transform.Rotate(Vector3, float) 旋转模型。
      • Vector3:沿某个轴向旋转。
      • Float:旋转的度数。
        private Transform m_Transform;
        
        void Start()
        {
           m_Transform = gameObject.GetComponent<Transform>();
        }
        
        void Update()
        {
           if(Input.GetKeyDown(KeyCode.Z))
           {
              OpenDoor();
           }
        
           if(Input.GetKeyUp(KeyCode.Z))
           {
              CloseDoor();
           }
        }
        
        void OpenDoor()
        {
           m_Transform.Rotate(Vector3.up, 90);
        }
        
        void CloseDoor()
        {
           m_Transform.Rotate(Vector3.up, -90);
        }
        

         

触发器实现开关门

  • 添加触发器
    • 创建一个空物体,添加 “Box Collider” 组件,设置大小和中心点。
    • 勾选 “Is Trigger” 变成触发器。
  • 代码实现触发器开关门
    • OnTriggerEnter()
    • OnTriggerExit()
  • 查找游戏物体
    • GameObject.Find(string):[静态方法]  通过名字查找游戏物体
    • String:游戏物体的名字。
      private Door m_Door;
      
      void Start()
      {
         m_Door = GameObject.Find("DoorParent").GetComponent<Door>();
      }
      
      void OnTriggerEnter(Collider coll)
      {
         if(coll.gameObject.name == "Student")
         {
            m_Door.OpenDoor();
         }
      }
      
      void OnTriggerExit(Collider coll)
      {
         if(coll.gameObject.name == "Student")
         {
            m_Door.CloseDoor();
         }
      }

       

 

发布了72 篇原创文章 · 获赞 9 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览