示例#1
0
    public void Running(Vector2 target, float input)
    {
        Vector2 position = transform.position;

        RaycastHit2D hit      = Physics2D.Raycast(position, actions.ForwardMovementDirection, RunLookout, LayerMask.GetMask("Floor"));
        float        rlookout = hit.collider == null ? RunLookout : hit.distance;

        hit = Physics2D.Raycast(position, -actions.ForwardMovementDirection, RunLookout, LayerMask.GetMask("Floor"));
        float llookout = hit.collider == null ? RunLookout : hit.distance;

        Vector2 right = position + actions.ForwardMovementDirection * rlookout;
        Vector2 left  = position - actions.ForwardMovementDirection * llookout;

        if ((target - right).magnitude > (target - left).magnitude)
        {
            actions.Run(input);
        }
        else
        {
            actions.Run(-input);
        }
    }
示例#2
0
    void FixedUpdate()
    {
        float run   = Input.GetAxis("Horizontal");
        float jump  = Input.GetAxis("Jump");
        float shock = Input.GetAxis("Fire1");

        if (jump != 0)
        {
            actions.JumpTowards(actions.UpVector);
        }

        if (run != 0f)
        {
            actions.Run(run);
        }

        if (shock != 0f)
        {
            actions.Shock();
        }
    }