Example #1
0
    private void apply_controls()
    {
        float dt = Time.deltaTime;

        Vector2 click = new Vector2(0.0f, 0.0f);

        receive_input(ref click);
        const float SENSITIVITY = 0.1f;

        if (click.y > SENSITIVITY || click.y < -SENSITIVITY || click.x < -SENSITIVITY || click.x > SENSITIVITY)
        {
            spritesheet_animation_timer += dt * ANIMATION_SPEED;
        }
        else
        {
            spritesheet_animation_timer = 0.0f;
        }

        if (click.y > SENSITIVITY)
        {
            ukko_speed_y        += UKKO_ACCELERATION * Time.deltaTime * click.y;
            spritesheet_square_y = 0;
            if (ukko_speed_y > 0.0f)             // moving up
            {
                if (map.map_value(x - UKKO_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) < 100 &&
                    map.map_value(x + UKKO_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) >= 100 &&
                    map.map_value(x + UKKO_DODGE_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) < 100)
                {
                    if (ukko_speed_x > -UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_x = -UKKO_MAX_SPEED * 0.3f;                         // dodge left
                    }
                }
                if (map.map_value(x + UKKO_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) < 100 &&
                    map.map_value(x - UKKO_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) >= 100 &&
                    map.map_value(x - UKKO_DODGE_RADIUS_X, y + UKKO_RADIUS_Y + ukko_speed_y * dt) < 100)
                {
                    if (ukko_speed_x < UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_x = UKKO_MAX_SPEED * 0.3f;                         // dodge right
                    }
                }
            }
        }
        else if (click.y < -SENSITIVITY)
        {
            ukko_speed_y        += UKKO_ACCELERATION * Time.deltaTime * click.y;
            spritesheet_square_y = 1;
            if (ukko_speed_y < 0.0f)             // moving down
            {
                if (map.map_value(x - UKKO_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) < 100 &&
                    map.map_value(x + UKKO_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) >= 100 &&
                    map.map_value(x + UKKO_DODGE_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) < 100)
                {
                    if (ukko_speed_x > -UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_x = -UKKO_MAX_SPEED * 0.3f;                         // dodge left
                    }
                }
                if (map.map_value(x + UKKO_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) < 100 &&
                    map.map_value(x - UKKO_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) >= 100 &&
                    map.map_value(x - UKKO_DODGE_RADIUS_X, y - UKKO_RADIUS_Y + ukko_speed_y * dt) < 100)
                {
                    if (ukko_speed_x < UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_x = UKKO_MAX_SPEED * 0.3f;                         // dodge right
                    }
                }
            }
        }
        else
        {
            if (ukko_speed_y < 0.0f)
            {
                ukko_speed_y += UKKO_ACCELERATION * Time.deltaTime;
                if (ukko_speed_y > 0.0f)
                {
                    ukko_speed_y = 0.0f;
                }
            }
            if (ukko_speed_y > 0.0f)
            {
                ukko_speed_y -= UKKO_ACCELERATION * Time.deltaTime;
                if (ukko_speed_y < 0.0f)
                {
                    ukko_speed_y = 0.0f;
                }
            }
        }
        if (click.x < -SENSITIVITY)
        {
            ukko_speed_x += UKKO_ACCELERATION * Time.deltaTime * click.x;
            if (Mathf.Abs(click.x) > Mathf.Abs(click.y))
            {
                spritesheet_square_y = 2;
            }
            if (ukko_speed_x < 0.0f)             // moving left
            {
                if (map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_RADIUS_Y) < 100 &&
                    map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_RADIUS_Y) >= 100 &&
                    map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_DODGE_RADIUS_Y) < 100)
                {
                    if (ukko_speed_y < UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_y = UKKO_MAX_SPEED * 0.3f;                         // dodge up
                    }
                }
                if (map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_RADIUS_Y) < 100 &&
                    map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_RADIUS_Y) >= 100 &&
                    map.map_value(x - UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_DODGE_RADIUS_Y) < 100)
                {
                    if (ukko_speed_y > -UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_y = -UKKO_MAX_SPEED * 0.3f;                         // dodge down
                    }
                }
            }
        }
        else if (click.x > SENSITIVITY)
        {
            ukko_speed_x += UKKO_ACCELERATION * Time.deltaTime * click.x;
            if (Mathf.Abs(click.x) > Mathf.Abs(click.y))
            {
                spritesheet_square_y = 3;
            }
            if (ukko_speed_x > 0.0f)             // moving left
            {
                if (map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_RADIUS_Y) < 100 &&
                    map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_RADIUS_Y) >= 100 &&
                    map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_DODGE_RADIUS_Y) < 100)
                {
                    if (ukko_speed_y < UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_y = UKKO_MAX_SPEED * 0.3f;                         // dodge up
                    }
                }
                if (map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y - UKKO_RADIUS_Y) < 100 &&
                    map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_RADIUS_Y) >= 100 &&
                    map.map_value(x + UKKO_RADIUS_X + ukko_speed_x * dt, y + UKKO_DODGE_RADIUS_Y) < 100)
                {
                    if (ukko_speed_y > -UKKO_MAX_SPEED * 0.3f)
                    {
                        ukko_speed_y = -UKKO_MAX_SPEED * 0.3f;                         // dodge down
                    }
                }
            }
        }
        else
        {
            if (ukko_speed_x < 0.0f)
            {
                ukko_speed_x += UKKO_ACCELERATION * Time.deltaTime;
                if (ukko_speed_x > 0.0f)
                {
                    ukko_speed_x = 0.0f;
                }
            }
            if (ukko_speed_x > 0.0f)
            {
                ukko_speed_x -= UKKO_ACCELERATION * Time.deltaTime;
                if (ukko_speed_x < 0.0f)
                {
                    ukko_speed_x = 0.0f;
                }
            }
        }
        //Debug.Log("ukko=("+x+", "+y+")   speed=("+ukko_speed_x+", "+ukko_speed_y+")");
    }
Example #2
0
    private void move()
    {
        float dt = Time.deltaTime;

        if (speed_y > 0.0f)         // moving up
        {
            if (map.map_value(x - RADIUS_X, y + RADIUS_Y + speed_y * dt) < 100 &&
                map.map_value(x, y + RADIUS_Y + speed_y * dt) < 100 &&
                map.map_value(x + RADIUS_X, y + RADIUS_Y + speed_y * dt) < 100)
            {
                y += speed_y * dt;
            }
            else
            {
                speed_y = 0.0f;
            }
        }
        if (speed_y < 0.0f)         // moving down
        {
            if (map.map_value(x - RADIUS_X, y - RADIUS_Y + speed_y * dt) < 100 &&
                map.map_value(x, y - RADIUS_Y + speed_y * dt) < 100 &&
                map.map_value(x + RADIUS_X, y - RADIUS_Y + speed_y * dt) < 100)
            {
                y += speed_y * Time.deltaTime;
            }
            else
            {
                speed_y = 0.0f;
            }
        }
        if (speed_x < 0.0f)         // moving left
        {
            if (map.map_value(x - RADIUS_X + speed_x * dt, y + RADIUS_Y) < 100 &&
                map.map_value(x - RADIUS_X + speed_x * dt, y) < 100 &&
                map.map_value(x - RADIUS_X + speed_x * dt, y - RADIUS_Y) < 100)
            {
                x += speed_x * Time.deltaTime;
            }
            else
            {
                speed_x = 0.0f;
            }
        }
        if (speed_x > 0.0f)         // moving right
        {
            if (map.map_value(x + RADIUS_X + speed_x * dt, y + RADIUS_Y) < 100 &&
                map.map_value(x + RADIUS_X + speed_x * dt, y) < 100 &&
                map.map_value(x + RADIUS_X + speed_x * dt, y - RADIUS_Y) < 100)
            {
                x += speed_x * Time.deltaTime;
            }
            else
            {
                speed_x = 0.0f;
            }
        }
        transform.position = new Vector3(x, 0.0f, y);
        map.update_object_position(id, x, y);

        state_timer += dt;
        if (state == 0 && (speed_y == 0.0f || state_timer > 5.0f))
        {
            state = 3;
            spritesheet_square_y = 3;
            state_timer          = 0.0f;
            speed_x = MAX_SPEED;
            speed_y = 0.0f;
        }
        if (state == 1 && (speed_y == 0.0f || state_timer > 3.0f))
        {
            state = 2;
            spritesheet_square_y = 2;
            state_timer          = 0.0f;
            speed_x = -MAX_SPEED;
            speed_y = 0.0f;
        }
        if (state == 2 && (speed_x == 0.0f || state_timer > 2.0f))
        {
            state = 0;
            spritesheet_square_y = 0;
            state_timer          = 0.0f;
            speed_x = 0.0f;
            speed_y = MAX_SPEED;
        }
        if (state == 3 && (speed_x == 0.0f || state_timer > 1.0f))
        {
            state = 1;
            spritesheet_square_y = 1;
            state_timer          = 0.0f;
            speed_x = 0.0f;
            speed_y = -MAX_SPEED;
        }
    }