예제 #1
0
    private void Move(Vector3 moveDir)
    {
        if (stunTimer <= 0)
        {
            if (!collisionChecker.IsColliding(transform.position + (moveDir * speed + pushVelocity) * Time.deltaTime, false))
                transform.position += (moveDir * speed + pushVelocity) * Time.deltaTime;
        }
        else
        {
            if (!collisionChecker.IsColliding(transform.position + pushVelocity * Time.deltaTime, false))
                transform.position += pushVelocity * Time.deltaTime;
        }

        if (slowTimer > 0)
        {
            slowTimer -= Time.deltaTime;

            if (slowTimer < 0)
                speed = baseSpeed;
        }

        if(stunTimer > 0)
        {
            stunTimer -= Time.deltaTime;
        }

        if (pushVelocity.magnitude > 0)
        {
            if (pushVelocity.magnitude < resistForce)
                pushVelocity = new Vector3(0, 0, 0);
            else
                pushVelocity -= pushVelocity.normalized * resistForce * Time.deltaTime;
        }

        Turn(moveDir);
    }
예제 #2
0
    private void Move(Vector3 moveDir, bool left)
    {
        float runMult = 1.0f;

        if (alwaysSprint || (!left && runAction.GetState(SteamVR_Input_Sources.RightHand) ||
                             left && runAction.GetState(SteamVR_Input_Sources.LeftHand)))
        {
            runMult = runMultiplier;
        }

        velocity = moveDir * moveSpeed * runMult;

        if (!collisionChecker.IsColliding(transform.position + velocity * Time.deltaTime, true))
        {
            transform.position += velocity * Time.deltaTime;
        }
    }