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();
         }
      }

猜你喜欢

转载自blog.csdn.net/weixin_41232641/article/details/82253946