public override void HandleReactionAfterStimulus()
    {
        ApplyGravity();
        ApplyDeltaTime();
        ApplyLimitsToVelocity();

        PhysicsCollisionController.RayHitSide rayHitSide = GetComponent <PhysicsCollisionController>().CastRays(ref velocity);
        if (rayHitSide.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.LEFT)
        {
            velocity.x = Mathf.Abs(velocity.x);
            xFacingDir = Vector2.right;
        }
        else if (rayHitSide.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.RIGHT)
        {
            velocity.x = -Mathf.Abs(velocity.x);
            xFacingDir = Vector2.left;
        }
        else
        {
            xFacingDir = Vector2.zero;
        }

        ApplyVelocityToPosition();
        ApplySpriteDirection();
    }
Beispiel #2
0
    public void HandleMovement()
    {
        velocity.y -= gravity * Time.deltaTime;
        //velocity only used in collision function
        Vector2 velocityWithDelta = velocity * Time.deltaTime;

        PhysicsCollisionController.RayHitSide rayHitSideInfo = collisionControler.CastRays(ref velocityWithDelta);
        if (rayHitSideInfo.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.LEFT || rayHitSideInfo.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.RIGHT)
        {
            velocity.x = (velocity.x / 2f) * -1;
        }
        if (rayHitSideInfo.ver == PhysicsCollisionController.E_RAY_HIT_SIDE.BOTTOM || rayHitSideInfo.ver == PhysicsCollisionController.E_RAY_HIT_SIDE.BOTTOM)
        {
            velocity.x = velocity.x / 1.2f;
            velocity.y = (velocity.y / 2f) * -1;
        }
        transform.Translate(velocity * Time.deltaTime);
    }