void Awake()
    {
        m_Rigidbody = GetComponent <PlayerReferences>().rigRigidbody;

        m_ClimbInfluencer     = null;
        m_CollisionCorrection = Vector3.zero;
    }
Beispiel #2
0
    public void Grab(PlayerInput_Interactor grabScript)
    {
        if (GrabTransform != null)
        {
            GrabTransform.GetComponent <PlayerInput_Interactor>().ForceDrop();
        }

        GrabTransform = grabScript.transform;
    }
    public void Grab(PlayerInput_Interactor grabScript)
    {
        ChangeLayerOfAllColliders(LayerMask.NameToLayer("DontHitPlayer"));
        if (GrabInteractor != null)
        {
            GrabInteractor.ForceDrop();
        }

        GrabInteractor = grabScript;

        OnGrab?.Invoke(this, grabScript);
    }
    public void AddInfluencer(PlayerInput_Interactor NewInfluencer)
    {
        if (ClimbInfluencers.Contains(NewInfluencer))
        {
            return;
        }

        ClimbInfluencers.Add(NewInfluencer);
        Rigidbody.useGravity = false;
        GravityColliderScript.CollisionStatusChanged += HandleCollision;

        ResetReferences();
    }
    public void Drop()
    {
        if (GrabInteractor != null)
        {
            OnDrop?.Invoke(this, GrabInteractor);

            var tempTransform = GrabInteractor;

            // Do this to prevent an endless loop of dropping
            GrabInteractor = null;
            tempTransform.GetComponent <PlayerInput_Interactor>().ForceDrop();
        }
        ChangeLayerOfAllColliders(InitialLayer);
    }
    public void RemoveInfluencer(PlayerInput_Interactor InfluencerToRemove)
    {
        if (m_ClimbInfluencer != InfluencerToRemove)
        {
            return;
        }

        m_ClimbInfluencer = null;
        GravityColliderScript.CollisionStatusChanged -= HandleCollision;
        m_Rigidbody.useGravity = true;
        m_CollisionCorrection  = Vector3.zero;
        m_Colliding            = false;
        m_Rigidbody.AddForce(-3f * InfluencerToRemove.velocities.Velocity, ForceMode.VelocityChange); // fling
    }
    public void RemoveInfluencer(PlayerInput_Interactor NewInfluencer)
    {
        if (ClimbInfluencers.Contains(NewInfluencer))
        {
            GravityColliderScript.CollisionStatusChanged -= HandleCollision;
            ClimbInfluencers.Remove(NewInfluencer);
        }

        if (ClimbInfluencers.Count == 0)
        {
            Rigidbody.useGravity = true;
            CollisionCorrection  = Vector3.zero;
            Colliding            = false;
        }
    }
    public void AddInfluencer(PlayerInput_Interactor NewInfluencer)
    {
        if (m_ClimbInfluencer == NewInfluencer)
        {
            return;
        }

        if (m_ClimbInfluencer == null)
        {
            GravityColliderScript.CollisionStatusChanged += HandleCollision;
        }

        m_ClimbInfluencer      = NewInfluencer;
        m_Rigidbody.useGravity = false;
        m_Rigidbody.velocity   = Vector3.zero;

        ResetReferences();
    }