Beispiel #1
0
    public void ShouldBeGroundedWhenCollideWithFloor(
        float objPos, float objOff, bool expected
        )
    {
        var floor = new GameObject("floor");

        floor.transform.position = new Vector3(0, 0, 0);
        var floorCol = floor.AddComponent <BoxCollider>();

        floorCol.size = new Vector3(1, 1, 1);

        var groundedObject = new GameObject("groundedObject");

        groundedObject.transform.position = new Vector3(0, objPos, 0);
        var objCol = groundedObject.AddComponent <CapsuleCollider>();

        objCol.height = 2f;
        objCol.radius = 0.5f;

        var checkGroundHandler = new CheckGroundHandler(groundedObject.transform, objOff);

        checkGroundHandler.DebugMode(true).CheckGround();

        Assert.AreEqual(expected, checkGroundHandler.IsGrounded);

        Object.DestroyImmediate(floor);
        Object.DestroyImmediate(groundedObject);
    }
        protected override void OnUpdate()
        {
            CheckGroundHandler.CheckGround();

            if (TryAim())
            {
                return;
            }

            TryJump();
        }
        public void TryJump()
        {
            if (!CheckGroundHandler.IsGrounded)
            {
                return;
            }

            if (!Inputs.Jump)
            {
                return;
            }

            CheckGroundHandler.Disable(new UnityTimer().SetAmount(1f));

            AudioSource.PlayOneShot(Settings.JumpAudioClip);
            Rigidbody.AddForce(Vector3.up * Settings.JumpForce, ForceMode.Impulse);
        }
Beispiel #4
0
    public void ShouldDisabledCheckForXTime()
    {
        var floor = new GameObject("floor");

        floor.transform.position = new Vector3(0, 0, 0);
        var floorCol = floor.AddComponent <BoxCollider>();

        floorCol.size = new Vector3(1, 1, 1);

        var groundedObject = new GameObject("groundedObject");

        groundedObject.transform.position = new Vector3(0, 1.5f, 0);
        var objCol = groundedObject.AddComponent <CapsuleCollider>();

        objCol.height = 2f;
        objCol.radius = 0.5f;

        var checkGroundHandler = new CheckGroundHandler(groundedObject.transform, 0.1f);

        checkGroundHandler.DebugMode(true).CheckGround();

        Assert.True(checkGroundHandler.IsGrounded);

        var timerMock = new Mock <ITimer>();

        checkGroundHandler.Disable(timerMock.Object);

        checkGroundHandler.CheckGround();
        Assert.False(checkGroundHandler.IsGrounded);

        timerMock.SetupGet(t => t.Completed).Returns(true);
        Assert.False(checkGroundHandler.IsGrounded);

        checkGroundHandler.CheckGround();
        Assert.True(checkGroundHandler.IsGrounded);

        Object.DestroyImmediate(floor);
        Object.DestroyImmediate(groundedObject);
    }