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); }
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; } }