SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › Рандомное изменение направления движения врага › Ответ в теме: Рандомное изменение направления движения врага
Ничего не помогает…
Вот код:
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
void update(float time) { moveTimer += time; rect.left += dx*time*speed; Collision(0); Physics(); rect.top += dy*time*speed; Collision(1); Physics(); sprite.setPosition(rect.left, rect.top); if (moveTimer > 15000) { moveTimer = 0; randAxis = rand() % 4; if (randAxis == 0) { dx = 0.01; dy = 0; } if (randAxis == 1) { dx = -0.01; dy = 0; } if (randAxis == 2) { dy = 0.01; dx = 0; } if (randAxis == 3) { dy = -0.01; dx = 0; } } } void Collision(int axis) { for (int i = rect.top / 30; i < (rect.top + rect.height) / 30; i++) for (int j = rect.left / 30; j < (rect.left + rect.width) / 30; j++) { if ((TileMap[i][j] == 'B') || (TileMap[i][j] == '0')) { if (axis == 0) { if (dx > 0) rect.left = j * 30 - rect.width; if (dx < 0) rect.left = j * 30 + 30; dx = 0; int randomAxis; randomAxis = rand() % 4; if (randomAxis == 0) dy = 0.01; else if (randomAxis == 1) dy = -0.01; else if (randomAxis == 2) dx = 0.01; else dx = -0.01; } if (axis == 1) { if (dy > 0) rect.top = i * 30 - rect.height; if (dy < 0) rect.top = i * 30 + 30; dy = 0; int randomAxis; randomAxis = rand() % 4; if (randomAxis == 0) dx = 0.01; else if (randomAxis == 1) dx = -0.01; else if (randomAxis == 2) dy = 0.01; else dy = -0.01; } } } } |