示例#1
0
    void Start()
    {
        //set up object and component references
        playerObj            = Camera.main.transform.GetComponent <CameraControl>().playerObj;
        myTransform          = transform;//store this object's transform for optimization
        playerObjTransform   = playerObj.transform;
        mainCameraTransform  = Camera.main.transform;
        FPSPlayerComponent   = playerObj.GetComponent <FPSPlayer>();
        weaponObj            = FPSPlayerComponent.weaponObj;
        MouseLookComponent   = transform.parent.transform.GetComponent <SmoothMouseLook>();
        GunSwayComponent     = weaponObj.GetComponent <GunSway>();
        FPSWalkerComponent   = playerObj.GetComponent <FPSRigidBodyWalker>();
        VisibleBodyComponent = FPSWalkerComponent.VisibleBody.GetComponent <VisibleBody>();
        IronsightsComponent  = playerObj.GetComponent <Ironsights>();
        InputComponent       = playerObj.GetComponent <InputControl>();
        if (playerObj.GetComponent <WorldRecenter>())
        {
            WorldRecenterComponent = playerObj.GetComponent <WorldRecenter>();
        }
        AnimationComponent = GetComponent <Animation>();

        offsetAmt       = offset;
        currentDistance = 0f;
        zoomDistance    = 0f;
    }
示例#2
0
 void Start()
 {
     myTransform            = transform;
     WorldRecenterComponent = Camera.main.GetComponent <CameraKick>().playerObj.transform.GetComponent <WorldRecenter>();
     if (!isRadiusCollider)
     {
         //get radius value from sphere collider radius of child radius object
         radius = myTransform.GetComponentInChildren <SphereCollider>().radius;
         AlignToGround();            //automatically align radius collider object's angles and position with the ground underneath it
     }
 }
示例#3
0
 void Start()
 {
     myTransform         = transform;//store this object's transform for optimization
     playerObjTransform  = playerObj.transform;
     mainCameraTransform = Camera.main.transform;
     //define external script references
     FPSWalkerComponent     = playerObj.GetComponent <FPSRigidBodyWalker>();
     IronsightsComponent    = playerObj.GetComponent <Ironsights>();
     FPSPlayerComponent     = playerObj.GetComponent <FPSPlayer>();
     WorldRecenterComponent = playerObj.GetComponent <WorldRecenter>();
 }
示例#4
0
    void FixedUpdate()
    {
        //set up external script references
        FPSRigidBodyWalker FPSWalkerComponent     = playerObj.GetComponent <FPSRigidBodyWalker>();
        PlayerWeapons      PlayerWeaponsComponent = gunObj.transform.parent.GetComponent <PlayerWeapons>();
        WorldRecenter      WorldRecenterComponent = playerObj.transform.GetComponent <WorldRecenter>();

        if (Time.time > shellRemovalTime)
        {
            Object.Destroy(lerpShell.gameObject);
            Object.Destroy(gameObject);
        }

        //Check if the player is on a moving platform to determine how to handle shell parenting and velocity
        //if(playerObjTransform.parent == FPSWalkerComponent.mainObj.transform){//if player is not on a moving platform
        if ((WorldRecenterComponent.removePrefabRoot && playerObjTransform.parent == null) ||
            (!WorldRecenterComponent.removePrefabRoot && playerObjTransform.parent == FPSWalkerComponent.mainObj.transform))
        {
            //Make the shell's parent the weapon object for a short time after ejection
            //to the link shell ejection position with weapon object for more consistent movement,
            if (((startTime + 0.35f < Time.time && parentState)
                 //don't parent shell if switching weapon
                 || (PlayerWeaponsComponent.switching && parentState)
                 //don't parent shell if moving weapon to sprinting position
                 || (FPSWalkerComponent.sprintActive && !FPSWalkerComponent.cancelSprint && parentState)) &&
                FPSWalkerComponent.grounded)
            {
                Vector3 tempVelocity = playerObjTransform.GetComponent <Rigidbody>().velocity;
                tempVelocity.y     = 0.0f;
                myTransform.parent = null;
                lerpShell.parent   = null;
                //add player velocity to shell when unparenting from player object to prevent shell from suddenly changing direction
                if (!FPSWalkerComponent.sprintActive && !FPSWalkerComponent.canRun)                //don't inherit parent velocity if sprinting to prevent visual glitches
                {
                    GetComponent <Rigidbody>().AddForce(tempVelocity, ForceMode.VelocityChange);
                }
                parentState = false;
            }
        }
        else          //if player is on elevator, keep gun object as parent for a longer time to prevent strange shell movements
        {
            if (startTime + 0.5f < Time.time && parentState)
            {
                myTransform.parent = null;
                lerpShell.parent   = null;
                //add player velocity to shell when unparenting from player object to prevent shell from suddenly changing direction
                GetComponent <Rigidbody>().AddForce(playerObjTransform.GetComponent <Rigidbody>().velocity, ForceMode.VelocityChange);
            }
        }
    }