Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (controller.collisions.above || controller.collisions.below)
        {
            if (controller.collisions.slidingDownMaxSlope)
            {
                velocity.y += controller.collisions.slopeNormal.y * -gravity * Time.deltaTime;
            }

            else
            {
                velocity.y = 0;
            }
        }



        Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));

        velocity.x = input.x * moveSpeed;

        velocity.y -= gravity;



        castInfo side = controller.HorizontalCast(checkDistance * Mathf.Sign(velocity.x), transform.position);

        if (side.hitObject != null && Input.GetAxisRaw("Fire1") != 0)
        {
            if (side.hitObject.tag == "box")
            {
                pushObject = side.hitObject;
            }
        }

        if (pushObject != null)
        {
            PushBox(pushObject, side);
            return;
        }

        if (Input.GetAxisRaw("Jump") != 0 && controller.collisions.below)
        {
            velocity.y = jumpVelocity;
        }

        controller.Move(velocity * Time.deltaTime);
    }
Exemplo n.º 2
0
    float GetDistanceToInteractable(Vector2 interPos, Controller2D boxController)
    {
        float dist = 0;

        if ((interPos.y - boxController.box.bounds.size.y / 2) < (transform.position.y - controller.box.bounds.size.y / 2))
        {
            //chacter staat hoger
            castInfo i = controller.HorizontalCast(Mathf.Abs(transform.position.x - interPos.x) * Mathf.Sign(interPos.x - transform.position.x), transform.position, pushObject);

            if (i.hasHit)
            {
                dist = i.hitDistance;
            }
        }
        else
        {
            //box staat hoger
            castInfo i = boxController.HorizontalCast(Mathf.Abs(interPos.x - transform.position.x) * Mathf.Sign(transform.position.x - interPos.x), interPos, gameObject);

            if (i.hasHit)
            {
                dist = -i.hitDistance;
            }
        }


        return(dist);
    }
Exemplo n.º 3
0
    void Update()
    {
        if (controller.collisions.above || controller.collisions.below)
        {
            if (controller.collisions.slidingDownMaxSlope)
            {
                velocity.y += controller.collisions.slopeNormal.y * -gravity * Time.deltaTime;
            }

            else
            {
                velocity.y = 0;
            }
        }

        transform.localScale = (Mathf.Sign(velocity.x) * scale.x * Vector2.right) + scale.y * Vector2.up;

        Vector2 input = new Vector2(Mathf.Sign(target.transform.position.x - transform.position.x), 0);

        velocity.x = input.x * moveSpeed;

        velocity.y -= gravity;

        castInfo i = controller.HorizontalCast((velocity.x * 3) * Time.deltaTime, transform.position);

        if (i.hasHit && Vector2.Angle(i.hitNormal, Vector2.up) > controller.maxAngle)
        {
            velocity.y = jumpVelocity;
        }



        controller.Move(velocity * Time.deltaTime);
    }