Aktywne Wpisy
![Wsxedcrfv](https://wykop.pl/cdn/c3397992/Wsxedcrfv_35rL8zv34Z,q60.jpg)
Wsxedcrfv +599
Lekarz, któremu wystawiłem na znanylekarz.pl opinię, zgodną z prawdą (po prostu odwołała wizytę w dniu wizyty na 40 minut przed, bez podania przyczyny, jak już byłem w drodze) pisze mi teraz że "proszę oczekiwać pozwu sądowego za narudzenie dóbr osobistych" XDDDDD
To powszechna praktyka w tym serwisie? XD
To teraz już wiem skąd niektórzy lekarze mają 5.0/5.0 średnią (co jest niemożliwe i wie to każdy kto zajmuje się statystyką)
#znanylekarz #bekazpodludzi #
To powszechna praktyka w tym serwisie? XD
To teraz już wiem skąd niektórzy lekarze mają 5.0/5.0 średnią (co jest niemożliwe i wie to każdy kto zajmuje się statystyką)
#znanylekarz #bekazpodludzi #
SmokingParadise +25
Jeśli skrót od Niemcy to GER, a skrót od Nigeria to NIG, to jak napisać skrót Nigeria - Niemcy?
@wykop-gpt
@wykop-gpt
Generalnie robie sobie prostego #roguelike i spawnuje sobie potworki na mapie. Jak jest ich duzo (100+) to zaczyna mi przycinać przy chodzeniu. Chce napisać prosty algorytm optymalizacyjny który sprawdzi w jakiej odleglosci od gracza jest potwor i jesli ta odleglosc jest np ponizej 10 kratek, to dopiero go ozywia.
splodzilem cos takiego
void CheckMonsterDistance(int posX, int posY, int range)
{
if (range >= 0)
{
if (mapGenerator.map[posX, posY] == 'm')
{
for (int j = 0; j < Enemies.Length; j++)
{
if (Enemies[j].transform.position.x == posX &&
Enemies[j].transform.position.z == posY)
Enemies[j].GetComponent().awake = true;
Debug.Log("enemy at " + range);
}
}
CheckMonsterDistance(posX - 1, posY, range - 1);
CheckMonsterDistance(posX + 1, posY, range - 1);
CheckMonsterDistance(posX, posY - 1, range - 1);
CheckMonsterDistance(posX, posY + 1, range - 1);
}
else
{
return;
}
}
wołam to tym:
if (TimeManager.playerTurn)
{
CheckMonsterDistance((int)transform.position.x, (int)transform.position.z, 4);
}
a potwór ma w update na początku
if (awake){
}
i niby odpala, errorów nie ma, ale cos nie dziala tak jak powinno (wykrywa mi potwora dopiero jak jestem obok niego i proboje na niego "wejsc")
wydaje mi sie ze blad jest gdzies po stronie samego algorytmu CheckMonsterDistance
Jakis pomysl?
Tak na szybko
1) do posY podajesz pozycje Z ? Tak ma być?
2) Co robi ten if?
if (mapGenerator.map[posX, posY] == 'm')
3) Co sprawdzasz tutaj?
if (Enemies[j].transform.position.x == posX &&
Enemies[j].transform.position.z == posY)
Dalej jak dobrze rozumiem jest wybudzenie potworka
PosX i posY to są współrzędne postaci tak?
4)
CheckMonsterDistance(posX - 1, posY, range - 1);
CheckMonsterDistance(posX + 1, posY, range - 1);
CheckMonsterDistance(posX, posY - 1, range
http://www.math4ged.com/finding-the-distance-between-two-points-on-a-coordinate-grid/
Prosta matma, jedna funkcja (która może być powielona do wielu innych zadań). Sprawdzasz po prostu
IF getdistance(monster.x,monster.y,player.x,player.y) < activationdistance THEN monster.active == 1 ELSE monster.active == 0
Wywołujesz to w forze na każdym przeciwniku. Potem możesz elegancko korzystać z funkcji do np. ataku z dystansu, czy sprawdzenia czy gracz jest odpowiednio daleko
Komentarz usunięty przez autora
Tak. Generalnie trzymam informacje o pozycji gracza, obiektach na mapie itd. w dwuwymiarowej tablicy charów, której reprezentacją są obiekty 3d na scenie. Więc gdy mam tablice charow X, Y to odpowiada im w przestrzeni 3d X i Z.
if (mapGenerator.map[posX, posY] == 'm')
Sprawdza czy na tablicy charów znajduje sie w tej pozycji
float distance = Vector3.Distance(enemy.transform.position, player.transform.position);
i sprawdzać jaka jest wartość 'distance'?