Ejemplo n.º 1
0
 public void SetPhysicsMode(E_PHYSICSMODE _Mode, bool _Network = true)
 {
     if (_Network)
     {
         m_PhotonView.RPC("SetPhysicsMode_RPC", RpcTarget.AllViaServer, _Mode);
     }
     else
     {
         SetPhysicsMode_RPC(_Mode);
     }
 }
Ejemplo n.º 2
0
    protected virtual void Awake()
    {
        m_MaxHealth = m_Health;

        m_Rigid = GetComponent <Rigidbody>();

        m_Transforms = GetComponentsInChildren <Transform>();
        m_Colliders  = GetComponentsInChildren <Collider>();
        m_Renderers  = GetComponentsInChildren <Renderer>();
        m_PhotonView = GetComponent <PhotonView>();

        m_ChangePhysicsType = m_PhysicsType;
    }
Ejemplo n.º 3
0
    public void SetPhysicsMode_RPC(E_PHYSICSMODE _Mode)
    {
        m_ChangePhysicsType = _Mode;
        if (m_PhotonView.IsMine)
        {
            SetPhotonInstantiationData(new int[] { 0 }, new object[] { m_ChangePhysicsType });
        }
        switch (_Mode)
        {
        case E_PHYSICSMODE.STATIC:
        {
            foreach (Transform t in m_Transforms)
            {
                t.gameObject.layer = Common.STATIC_LAYER;
            }

            m_Rigid.useGravity             = false;
            m_Rigid.isKinematic            = true;
            m_Rigid.interpolation          = RigidbodyInterpolation.None;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;

            foreach (Collider c in m_Colliders)
            {
                c.isTrigger = false;
            }
        }
        break;

        case E_PHYSICSMODE.DYNAMIC:
        {
            foreach (Transform t in m_Transforms)
            {
                t.gameObject.layer = Common.DYNAMIC_LAYER;
            }

            m_Rigid.useGravity             = true;
            m_Rigid.isKinematic            = false;
            m_Rigid.interpolation          = RigidbodyInterpolation.Interpolate;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;

            foreach (Collider c in m_Colliders)
            {
                c.isTrigger = false;
            }
        }
        break;

        case E_PHYSICSMODE.DYNAMIC_KINEMATIC:
        {
            foreach (Transform t in m_Transforms)
            {
                t.gameObject.layer = Common.DYNAMIC_LAYER;
            }

            m_Rigid.useGravity             = false;
            m_Rigid.isKinematic            = true;
            m_Rigid.interpolation          = RigidbodyInterpolation.None;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;

            foreach (Collider c in m_Colliders)
            {
                c.isTrigger = true;
            }
        }
        break;

        case E_PHYSICSMODE.ATTACHED:
        {
            foreach (Transform t in m_Transforms)
            {
                t.gameObject.layer = Common.ATTACHED_LAYER;
            }

            m_Rigid.useGravity             = false;
            m_Rigid.isKinematic            = true;
            m_Rigid.interpolation          = RigidbodyInterpolation.None;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;

            foreach (Collider c in m_Colliders)
            {
                c.isTrigger = true;
            }
        }
        break;

        case E_PHYSICSMODE.OPERATING:
        {
            foreach (Transform t in m_Transforms)
            {
                t.gameObject.layer = Common.OPERATING_LAYER;
            }

            m_Rigid.useGravity             = false;
            m_Rigid.isKinematic            = true;
            m_Rigid.interpolation          = RigidbodyInterpolation.None;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.Discrete;

            foreach (Collider c in m_Colliders)
            {
                c.isTrigger = true;
            }
        }
        break;

        case E_PHYSICSMODE.CHARACTER:
        {
            foreach (Transform t in m_Transforms)
            {
                gameObject.layer = Common.CHARACTER_LAYER;
            }

            m_Rigid.useGravity             = true;
            m_Rigid.isKinematic            = false;
            m_Rigid.interpolation          = RigidbodyInterpolation.Interpolate;
            m_Rigid.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;

            m_Rigid.constraints = RigidbodyConstraints.FreezeRotation;
        }
        break;
        }
    }