type position prüfen
Übersicht

![]() |
DottakopfBetreff: type position prüfen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Blitzer !
Ich möchte meinen npc nun collisionen geben(npc zu npc), aber irgendwie ist das doch schwerer als ich dachte. Bevor ein npc ein tile weitergeht, soll erst geschaut werden, ob sich dort nicht ein npc befindet. Eigentlich nix anderes als ne hinderniss prüfung, die ja schon funtzt. Also es soll überprüft werden, ob sich links neben dem npc auf der tilemap ein typ bot befindet: die abfrage geht aber nicht. Ich hab dachte, das es diese 2 ansätze sein müssten. Aber das ist irgendwie immer true ![]() Code: [AUSKLAPPEN] for info3.bot = each bot If map(info3\bot_x -1,info3\bot_y) = info3\bot_x Then links nicht frei End If next beim 2ten ansatz hab ich mir gedacht, vll braucht er die map position ? Code: [AUSKLAPPEN] if map(info3\bot_x -1,info3\bot_y) = map(info3\bot_x,info3\bot_y) then blubber end if Kann mir einer helfen ? mfg Dottakopf |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, 1. schaust du, ob links neben dem info3\ info3\ steht? Mit zuviel alkohol kann man vll. neben sich stehen...aber...naja.
Beim zweiten guggst du, ob die mapposition=True ist? Also 1? Und - sind die info3\bot koordinaten Pixel oder Tiles? |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
sie sind tiles. (naja eigendlich pixel, beim malen werden x und y*32 gennommen,da ein tile 32*32 pixel)
Ich weis des hört sich jetzt doof an, aber wie löse ich des? mfg Dottakopf |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] mybot.bot will sehen ob sein feld rechts frei ist
besetzt=0 For b.bot=each bot if (b\x+1=mybot\x) and (b\y=mybot\y) ;feld rechts neben mybot wird von b.bot besetzt besetzt=1 exit endif next if besetzt=1 ... du musst die koordinaten von dem überprüfenden bot mit den koordinaten von allen anderen vergleichen. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ähm hab so noch nicht mit types gearbeitet ![]() "mybot.bot" ist doch ne neue instanz oder ? wie lege ich die fest also ich erstelle hier meinen "normalen" bot Code: [AUSKLAPPEN] info3.bot = new bot info3\bot_x ..... und wie bekomme ich den rein ? was muss ich dem den zuweisen: Code: [AUSKLAPPEN] info3.bot = new bot info3\bot_x ..... mybot.bot = new bot mybot.bx = info3\bot_x mfg Dottakopf |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo nochmal.
Ich entschuldige mich gleich vorab, für diesen doppelpost, jedoch muss ich leider zugeben, dass ich den lösungsweg vom prinzip her verstanden hab, aber ich die umsetzung nicht zustande bekomme. meine Fragen: wo erstellst du mybot.bot ? ich nehme an, das dieser so erstellt wird "mybot.bot = new bot" Welche werte werden zugewiesen, und wann? einmal zum startup und in der main muss des ja auch irgendwie vertreten sein. Ich hab das so verstanden: Code: [AUSKLAPPEN] ;ich definiere meinen typ type bot field bx field by field blubber end type ;ich erstelle die bots beim mapchange for x = start_anzahl to max_anzahl info.bot = new bot info\bx = ... usw. mybot.bot = new bot mybot\bx = info\bx mybot\by = info\by next wie binde ich das mybot ein ? Ich muss das mybot ja auch irgendwie in der main akuallisieren, da der bot sich ja bewegt. Kann mir das bitte jemand genauer erklären ? mfg Dottakopf |
||
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
so würde ich das lössen:
(code nicht geprüft) Code: [AUSKLAPPEN] ; types Type bot field name$ field ID field x field y field runX field runY end type global bot.bot type bot_run field ID field from_x field from_y field to_x field to_y end type global bot_run.bot_run ;initalisiere bot bot=new bot bot\name$="werner" bot_id=bot_id+1 bot\ID=bot_id bot\x=0 bot\y=0 ; wert 1 oder -1 bot\runX=0 bot\runY=1 bot=new bot bot\name$="ulf" bot_id=bot_id+1 bot\ID=bot_id bot\x=0 bot\y=1 ;wert 1 oder -1 bot\runX=0 bot\runY=0 ; feld prüfen ;bots zählen bot_anzahl=0 for bot.bot = each bot bot_anzahl=bot_anzahl+1 if bot\runX<>0 OR bot\runY<>0 then bot_run=new bot_run bot_run\ID=bot\ID bot_run\from_x=bot\x bot_run\from_y=bot\y bot_run\to_x=bot\runX bot_run\to_y=bot\runY endif next ;prüfen for bot_run.bot_run = each bot_run ;erechne des feld zu dem gelaufen wird bot_pruf_X=bot_run\from_x+bot_run\to_x bot_pruf_Y=bot_run\from_y+bot_run\to_y ;vergleiche ziel positionen bot_pruf=0 for bot.bot =each bot if bot_pruf_X=bot\x then if bot_pruf_Y=bot\y then bot_pruf=1 endif endif next ;wenn kein bot an dieser stelle steht bewegung speichern if bot_pruf=0 then for bot.bot = each bot if bot_run\ID=bot\ID then bot\x=bot\x+bot\runX bot\y=bot\y+bot\runY bot\runX=0 bot\runY=0 endif next endif ;bot_run löschen Delete bot_run next ;bot_run ende |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group