001
02.12.2005, 15:55 Uhr
0xdeadbeef
Gott (Operator)
|
So einfach wirste in diesem Fall nicht davonkommen, es sei denn, du hast kein Problem damit, dass der Sound bei jedem Bewegungsevent innerhalb dieses Radius wieder gespielt wird. Wenn ich mal davon ausgehe, dass du auf ein Bewegungsevent reagierst, und dass du da zwei Punkte hast (von wo und wohin), dann wäre der Trigger "der vorherige Punkt war außerhalb des Radius und der neue ist innerhalb."
Denkbar wäre auch, dem entsprechenden Spieler ein Flag zuzuordnen und bei jedem Event abzuprüfen, etwa so:
C++: |
if(ich_bin_noch_nicht_innerhalb_des_radius && distance(point, allied_flag.home_origin) < 20) { ich_bin_noch_nicht_innerhalb_des_radius = false; play_sound(); } else if(distance(point, allied_flag.home_origin) > 21) { ich_bin_noch_nicht_innerhalb_des_radius = true; }
|
Dir wird auffallen, dass ich 21 statt 20 als Entfernung genommen habe. Der Grund ist, dass ich vermeiden will, dass, wenn jemand genau auf der Grenze z.B. in einen Kampf verwickelt wird, der Sound wieder und wieder und wieder und wieder abgespielt wird. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |