Tää toimii melkeen niinku pitäs mutta kun tietystä kohdasta ukko2:n takaa ampuu esim. sen olkapäähän, niin luodit lähtevät aivan väärään suuntaan, elikkä miten tämän saisi korjattua?
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään 'obj'
End Type
FrameLimit 40 'rajoita nopeutta
ukko2=LoadObject("media\guy.bmp",72)
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
AddText "Nuolista ohjaa, CTRL=ampuu"
ObjectPickable ukko2,2 'circle-pick
Repeat
ClsColor cbwhite
ObjectPick ukko
'Ohjaa ukkoa NUOLILLA
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
'Ammu-systeemi. Vain, jos ase on ladattu
If KeyDown(cbKeyRControl) And reload=0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ukko
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ukko
reload=5 'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If ObjectsOverlap(luoti\obj,ukko2,3) Then
RotateObject luoti\obj,PickedAngle()
EndIf
If Distance2(ukko,luoti\obj)>200 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Next luoti
DrawScreen
Until EscapeKey()
Hieman paremmin toimi tolla pallo tunnistuksel, mutta silti siin tyypissä oli joitakin kohtia joissa luodit lähtevät väärään suuntaan, saattaa tiettyy johtuu noista ukkelin muodoista, pitäis kokeilla että laitan jonkun erillisen pyöreen objektin ton ukon päälle ja siitä sitte otan sen törmäyksen, jos vaikka toimis.
En kokeillut koodia, mutta olin huomaavinani että se objectpick on laitettu ukolle, joten jos ukko kääntyy kun pati on ilmassa niin pickedangle osoittaa väärään suuntaan.
TheFish wrote:En kokeillut koodia, mutta olin huomaavinani että se objectpick on laitettu ukolle, joten jos ukko kääntyy kun pati on ilmassa niin pickedangle osoittaa väärään suuntaan.
Nyt kun kokelin niin juuri tuo se ongelma olikin, eli pickedanglessa ei ollu mitään ongelmaa, pitää yrittää muuttaa tuo jotenkin että toimis.
TheFish wrote:En kokeillut koodia, mutta olin huomaavinani että se objectpick on laitettu ukolle, joten jos ukko kääntyy kun pati on ilmassa niin pickedangle osoittaa väärään suuntaan.
Nyt kun kokelin niin juuri tuo se ongelma olikin, eli pickedanglessa ei ollu mitään ongelmaa, pitää yrittää muuttaa tuo jotenkin että toimis.
Kannattaisi suorittaa poiminta vasta ampumisen kohdalla, mutta jos ampuu spreadilla monta patia niin homma ei edelleenkään toimi. Siispä suoritetaan poiminta ammunnassa ja pistetään luodeille omat kimpoamiskulmat. Eli näin:
Type AMMUS 'luo kokoelma, jonka nimi on AMMUS
Field obj 'yksi kenttä nimeltään 'obj'
Field kimpkulma'kimpoamiskulma
End Type
FrameLimit 40 'rajoita nopeutta
ukko2=LoadObject("media\guy.bmp",72)
ukko=LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
AddText "Nuolista ohjaa, CTRL=ampuu"
ObjectPickable ukko2,2 'circle-pick
Repeat
ClsColor cbwhite
'Ohjaa ukkoa NUOLILLA
If LeftKey() Then TurnObject ukko,5
If RightKey() Then TurnObject ukko,-5
If UpKey() Then MoveObject ukko,2
If DownKey() Then MoveObject ukko,-2
'Ammu-systeemi. Vain, jos ase on ladattu
If KeyDown(cbKeyRControl) And reload=0 Then
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ukko
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ukko
'katsotaan kimpoamiskulma
ObjectPick ukko
luoti\kimpkulma = PickedAngle()
reload=5 'aseen lataus
EndIf
'päivitä aseen lataaminen
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If ObjectsOverlap(luoti\obj,ukko2,2) Then
RotateObject luoti\obj,luoti\kimpkulma
EndIf
If Distance2(ukko,luoti\obj)>200 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Next luoti
DrawScreen
Until EscapeKey()
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.