Beispiel #1
0
    private void move_character()
    {
        if (ukko_speed_x < -UKKO_MAX_SPEED)
        {
            ukko_speed_x = -UKKO_MAX_SPEED;
        }
        if (ukko_speed_x > UKKO_MAX_SPEED)
        {
            ukko_speed_x = UKKO_MAX_SPEED;
        }
        if (ukko_speed_y < -UKKO_MAX_SPEED)
        {
            ukko_speed_y = -UKKO_MAX_SPEED;
        }
        if (ukko_speed_y > UKKO_MAX_SPEED)
        {
            ukko_speed_y = UKKO_MAX_SPEED;
        }

        float dt = Time.deltaTime;

        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)
            {
                y += ukko_speed_y * dt;
            }
            else
            {
                ukko_speed_y = 0.0f;
            }
        }
        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)
            {
                y += ukko_speed_y * Time.deltaTime;
            }
            else
            {
                ukko_speed_y = 0.0f;
            }
        }
        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)
            {
                x += ukko_speed_x * Time.deltaTime;
            }
            else
            {
                ukko_speed_x = 0.0f;
            }
        }
        if (ukko_speed_x > 0.0f)         // moving right
        {
            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)
            {
                x += ukko_speed_x * Time.deltaTime;
            }
            else
            {
                ukko_speed_x = 0.0f;
            }
        }
        transform.position = new Vector3(x, 0.0f, y);
        map.update_object_position(id, x, y);
    }
Beispiel #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;
        }
    }