Esempio n. 1
0
 void /*Fixed*/ Update()
 {
     move = new Vector3(
         SpiffyInput.GetAxis("Horizontal"),
         0.0f,
         SpiffyInput.GetAxis("Vertical")
         );
 }
Esempio n. 2
0
    void FixedUpdate()
    {
        // if( PauseMenu.IsOpen() ) return;

        if (CanJump())
        {
            canJump = true;
            jumpLeniency.Reset();
            yVel = 0.0f;
        }
        else if (jumpLeniency.Update(Time.fixedDeltaTime))
        {
            canJump = false;
        }

        // if( canJump ) forwardAxisPower = vertAxis;
        // move.Normalize();
        var ang = cam.transform.eulerAngles.y * Mathf.Deg2Rad - Mathf.PI / 2.0f;

        var xMove = Mathf.Cos(ang) * move.z + Mathf.Sin(ang + Mathf.PI) * move.x;
        var yMove = -Mathf.Sin(ang) * move.z + Mathf.Cos(ang + Mathf.PI) * move.x;

        vel.x += xMove * moveSpeed * Time.fixedDeltaTime;
        vel.y += yMove * moveSpeed * Time.fixedDeltaTime;

        // xMove *= bhMod * bhStrafeMod;
        // yMove *= bhMod;

        // if( Mathf.Abs( xMove ) > 0.0f || Mathf.Abs( yMove ) > 0.0f )
        // {
        //  var rot = transform.eulerAngles;
        //  rot.y = Mathf.Atan2( xMove,yMove ) * Mathf.Rad2Deg;
        //  rot.y = Mathf.LerpAngle( transform.eulerAngles.y,rot.y,rotSpeed * Time.fixedDeltaTime );
        //  // transform.eulerAngles = rot;
        //
        //  // animCtrl.SetBool( "walk",true );
        // }
        // else
        // {
        //  // animCtrl.SetBool( "walk",false );
        // }

        if (SpiffyInput.GetAxis("Jump") > 0.0f)
        {
            if (!jumping && canJump)
            {
                jumping = true;

                if (yVel < 0.2f)
                {
                    audSrc.PlayOneShot(jumpSound);
                }
            }
        }
        else if (variableJump)
        {
            if (jumping && minJump.Update(Time.fixedDeltaTime))
            {
                StopJumping();
            }
        }

        if (jumping)
        {
            yVel = jumpPower;

            if (jumpTimer.Update(Time.fixedDeltaTime))
            {
                StopJumping();
            }
        }
        else
        {
            yVel -= gravAcc * Time.fixedDeltaTime;
        }

        if (vel.magnitude > maxSpeed)
        {
            vel = vel.normalized * maxSpeed;
        }

        if (resetPos == Vector3.zero)
        {
            charCtrl.Move((new Vector3(vel.x, yVel, vel.y) * moveSpeed + forceMove) * Time.fixedDeltaTime);

            if (footstepTimer.Update(Time.fixedDeltaTime) && charCtrl.isGrounded && move.sqrMagnitude > 0.2f)
            {
                footstepTimer.Reset();
                audSrc.PlayOneShot(footstepSounds[Random.Range(0, footstepSounds.Count)]);
            }
        }
        else
        {
            var diff = resetPos - transform.position;
            charCtrl.Move(diff);
            resetPos         = Vector3.zero;
            gameObject.layer = LayerMask.NameToLayer("Player");
        }

        // animCtrl.SetBool( "jump",yVel > 0.0f );
        // animCtrl.SetBool( "jump",!canJump );

        if (charCtrl.isGrounded)
        {
            if (stopForceMove || !SpiffyInput.CheckFree("Sprint"))
            {
                forceMove.Set(0.0f, 0.0f, 0.0f);
            }
        }

        if (canSprint)
        {
            if (SpiffyInput.CheckFree("Sprint"))
            {
                footstepTimer.Update(Time.fixedDeltaTime);
                if (forceMove.sqrMagnitude < maxSprintSpd * maxSprintSpd)
                {
                    forceMove += (cam.transform.forward + Vector3.up * sprintUpBias) *
                                 sprintAccel * Time.fixedDeltaTime;
                    // forceMove.x += xMove * sprintAccel * Time.fixedDeltaTime;
                    // forceMove.z += yMove * sprintAccel * Time.fixedDeltaTime;
                }
            }
        }

        if (canJetpack)
        {
            if (SpiffyInput.CheckFree("Jump"))
            {
                var forceDir = cam.transform.forward + Vector3.up * jetpackUpBias;
                forceMove += forceDir * jetpackAccel * Time.fixedDeltaTime;
            }
        }

        vel       *= decel;
        forceMove *= forceDecay;
    }