No tässä tyhmä kysymys:
Mikä on vikana kun teen ihan treeninä tällästä tasaloikintaa ja koitan saada ukkelin törmäämään mapin HIT kerrokseen, mutta se ei koskaan törmää siihen vaan tippuu pois ruudulta???
Ei ehkä niin tyhmä kysymys, silti: Miten tehdä sellainen windowsista tuttu avaruuden läpilentämis illuusio, joka löytyy tai ainakin löytyi näytönsäästäjänä. Eli pisteet ilmestyvät keskelle ja suurenevat ja leviävät sitten ympärille? Olisin todella kiitollinen jos joku edes antaisi vähän vinkkiä.
Luot ruudun keskeltä partikkeleita eri suuntiin.
Jokaisella partikkelilla on x,y ja z arvot, sekä suunta
Z-arvoa kasvatetaan kokoajan, ja mitä enemmän se on, sitä enemmän liikutetaan tähteä sen menosuuntaan kerrallaan.
Jokaisen partikkelin koko riippuu sen z-akselin paikasta, mitä suurempi arvo, sitä suurempi tähti.
Ja luonnollisesti ruudusta ulos kiitävät tähdet poistetaan.
SCREEN 800, 600
Type STARS
Field x As Float
Field y As Float
Field z As Float
End Type
Dim ps As Float, sx As Float, sy As Float
SCRwidth = ScreenWidth() / 2
SCRheight = ScreenHeight() / 2
max_distance# = 100 //Kuinka kaukaata tähdet näkyvät
scatter# = 200 //Kuinka leveällä alueella tähdet ovat
speed# = 0.1 //nopeus
starSize = 10 //Tähtien koko
starAmount = 100 //tähtien kokonaismäärä
For i = 1 To starAmount
ns.STARS = New(STARS)
ns\x = Rand(-scatter, scatter)
ns\y = Rand(-scatter, scatter)
ns\z = Rand(-max_distance, 0)
Next i
Repeat
//ota seuraava rivi pois käytöstä niin saat ohjelman normaaliksi
speed = speed + 0.02
For is.STARS = Each STARS
is\z = is\z + speed
ps = (1 / is\z) * 100
sx = is\x * ps + SCRwidth
sy = is\y * ps + SCRheight
size = starSize - (is\z / max_distance * -starSize)
If is\z < 0 And is\z > -max_distance Then
Circle sx, sy, size
EndIf
If is\z > 0 Then
Delete is
ns.STARS = New(STARS)
ns\x = Rand(-scatter, scatter)
ns\y = Rand(-scatter, scatter)
ns\z = -max_distance
EndIf
Next is
If speed > 10 Then
Circle 0, 0, SCRwidth + SCRheight / 2
DrawScreen
MakeError "Törmättiin 32.12 -kertaisella valonnopeudella tähteen." + Chr(10) + Chr(13) + "Sen siitä saa kun hurjastelee intergalaktisella moottoritiellä ylinopeutta!"
EndIf
DrawScreen
Forever
Saat ohjelmasta juuri sellaisen kuin halusit (ehkä) poistamalla yhden rivin. Se rivi kerrotaan koodissa.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
<- protestipelikilpailun voittaja. Space War
Oon kysyny tätä ennenkin.Taas se mun Stick Fighter2.0 onkelma.Eli miten mun pitäis tehä se ,että jos vihollinen seisoo mun eessä se mun ukko potkasee ja se osuu vihuun niin vihu menettää esim.10 hp.Oon yrittäny sillei että "Silmä1" niminen objekti laitetaan sen ukko1 pään kohalle ja sillä "silmä1" objektilla on noin 5 asteen näkö ja se silmä aina kääntyy jos ukko kääntyy.Jos "silmä1" näkee vihun ja samalla potkastaan niin on... ja jos on ... ja se osuu vihuun niin vihu menettää hp:tä.Aika epäselvä
Zrazy_Coder wrote:Oon kysyny tätä ennenkin.Taas se mun Stick Fighter2.0 onkelma.Eli miten mun pitäis tehä se ,että jos vihollinen seisoo mun eessä se mun ukko potkasee ja se osuu vihuun niin vihu menettää esim.10 hp.Oon yrittäny sillei että "Silmä1" niminen objekti laitetaan sen ukko1 pään kohalle ja sillä "silmä1" objektilla on noin 5 asteen näkö ja se silmä aina kääntyy jos ukko kääntyy.Jos "silmä1" näkee vihun ja samalla potkastaan niin on... ja jos on ... ja se osuu vihuun niin vihu menettää hp:tä.Aika epäselvä
Kokeile meneekö potkaisevan jalan animaatio päällekkäin vihun kuvan kanssa. Siis olettaen, että luot uuden objektin animaatiota varten, ja laitat sen ukon alle. ObjectsOverlap voi olla varsin hyödyllinen komento.
Öh.Mites saan tarkistettua osuuko vihu jalkaan kun jalka on kiinni UKKO1. . Ja jos se osuu jalkaan niin se ois sama, kun se osuis siihen UKKO1:seen.tai en vaan tajunnu.Mitä siis tarkotit ?
Zrazy_Coder wrote:Öh.Mites saan tarkistettua osuuko vihu jalkaan kun jalka on kiinni UKKO1. . Ja jos se osuu jalkaan niin se ois sama, kun se osuis siihen UKKO1:seen.tai en vaan tajunnu.Mitä siis tarkotit ?
Siis teet erillisen jalkaobjektin potkaisua varten. Tämä tosin on valitettavan purkkaa. Kannattaa mieluummin käyttää kuvia tällaisiin, ei tarvitse kikkailla useiden objektien kanssa ;D
Joo, en tee mitään erillaista jalkaobjektia , vaan yritän tehä sillä näkö hommalla sen, että jos Silmä1 näkee Ukko2 ja potkastaan niin päläpälä.Ja jos päläpälä ja se osuu "ukko1" osuu "ukko2":seen niin "ukko2hp"-10.Miten tollanen kannattais tehä, ehkä vähän purkka, mutta se erillinen objekti on vähän outo.
Zrazy_Coder wrote:Joo, en tee mitään erillaista jalkaobjektia , vaan yritän tehä sillä näkö hommalla sen, että jos Silmä1 näkee Ukko2 ja potkastaan niin päläpälä.Ja jos päläpälä ja se osuu "ukko1" osuu "ukko2":seen niin "ukko2hp"-10.Miten tollanen kannattais tehä, ehkä vähän purkka, mutta se erillinen objekti on vähän outo.
Äärimmäisen purkkaahan se on, jos rupeat jotain silmäobjekteja tekemään. Laske mieluummin ihan vaikka geometriaa käyttäen, teet siis jalan kohdalle neliön ja vihun päälle neliön, ja huomaat, että CB tekisi saman yhdellä komennolla ja pikselin tarkkuudella. Ei se erillinen objekti outo ole, esimerkiksi isometrisiä pelejä koostettaessa ainakin itselläni tuppaa grafiikan minimoimiseksi olemaan erikseen pää, vartalo ja kaikki raajat sekä käsissä olevat esineet.
vilQuri wrote:Miten voin asettaa tilekartan taakse taustan vai pitääkö se pistää suoraan karttaan?
Jos tavallinen kuva riittää, piirrä se loopissa ennen DrawGamea (jos käytät kyseistä komentoa).
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja, Sukellusvenepeli - voittaja, Paras tileset - voittaja Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä Hiirellä ohjattava peli - voittaja B)
For soldier.DUDE = Each DUDE
For mgrid.MOVEGRID = Each MOVEGRID
If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15 And MouseWY()<ObjectY(soldier\obj)-15 And MouseWY()>ObjectY(soldier\obj)+15 Then
End
If MouseHit(1) Then
For i = 1 To 4
mgrid.MOVEGRID = New(MOVEGRID)
mgrid\obj = CloneObject(greengrid)
CloneObjectPosition mgrid\obj, soldier\obj
RotateObject mgrid\obj, rotation
MoveObject mgrid\obj, 30
rotation + 90
Next i
EndIf
If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15 And MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15 Then
If MouseHit(1) Then
CloneObjectPosition soldier\obj, mgrid\obj
For grid.MOVEGRID = Each MOVEGRID
DeleteObject grid\obj
Delete grid
Next grid
Exit
EndIf
EndIf
EndIf
Next mgrid
Next soldier
kun klikkasin sotilasta hiirellä, ei tapahtunut mitään. Tarkistin rivin neljä pikän toimituksen useaan kertaan virheiden varalta. Heittelin endiä sinne tänne saadakseni virherivin selville. Koin yllätyksen, kun pistin endin riville kolme: Ohjelma ei suljennut heti alkaessaan! Mistä kummasta tässä on kyse?
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
kun klikkasin sotilasta hiirellä, ei tapahtunut mitään. Tarkistin rivin neljä pikän toimituksen useaan kertaan virheiden varalta. Heittelin endiä sinne tänne saadakseni virherivin selville. Koin yllätyksen, kun pistin endin riville kolme: Ohjelma ei suljennut heti alkaessaan! Mistä kummasta tässä on kyse?
Ainakin ihan aluksi, virheiden löytämisen helpottamiseksi, lyhennetäänpäs vähän noita If lausekkeita:
For soldier.DUDE = Each DUDE
For mgrid.MOVEGRID = Each MOVEGRID
If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15
If MouseWY()<ObjectY(soldier\obj)-15 And MouseWY()>ObjectY(soldier\obj)+15
End
If MouseHit(1) Then
For i = 1 To 4
mgrid.MOVEGRID = New(MOVEGRID)
mgrid\obj = CloneObject(greengrid)
CloneObjectPosition mgrid\obj, soldier\obj
RotateObject mgrid\obj, rotation
MoveObject mgrid\obj, 30
rotation + 90
Next i
EndIf
If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15
If MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15
If MouseHit(1) Then
CloneObjectPosition soldier\obj, mgrid\obj
For grid.MOVEGRID = Each MOVEGRID
DeleteObject grid\obj
Delete grid
Next grid
Exit
EndIf
EndIf
EndIf
EndIf
EndIf
Next mgrid
Next soldier
Ja nytten päästään sitten tutkailemaan koodia... taisin löytää yhden jännän rivin, edittaan sitten tätä viestiä.
miniedit: Niin joo, tuo End:hän astuu voimaan vasta kun hiiri on tietyssä paikassa, siksi ohjelma ei sammu heti.
EDIT:
Muokkasinkin sen virheen jo tuohon koodiin. Koodistasi siis puuttui yksi EndIf, ihmettelen vain miksi parseri ei valittanut mitään. Testaa tuota minun koodiani ja kerro jos ei toimi.
For soldier.DUDE = Each DUDE
For mgrid.MOVEGRID = Each MOVEGRID
If MouseWX()>ObjectX(soldier\obj)-15 And MouseWX()<ObjectX(soldier\obj)+15 And MouseWY()<ObjectY(soldier\obj)-15 And MouseWY()>ObjectY(soldier\obj)+15 Then
If MouseHit(1) Then
For i = 1 To 4
mgrid.MOVEGRID = New(MOVEGRID)
mgrid\obj = CloneObject(greengrid)
CloneObjectPosition mgrid\obj, soldier\obj
RotateObject mgrid\obj, rotation
MoveObject mgrid\obj, 30
rotation + 90
Next i
EndIf
EndIf
If MouseWX()>ObjectX(mgrid\obj)-15 And MouseWX()<ObjectX(mgrid\obj)+15 And MouseWY()>ObjectY(mgrid\obj)-15 And MouseWY()<ObjectY(mgrid\obj)+15 Then
If MouseHit(1) Then
CloneObjectPosition soldier\obj, mgrid\obj
For grid.MOVEGRID = Each MOVEGRID
DeleteObject grid\obj
Delete grid
Next grid
Exit
EndIf
EndIf
Next mgrid
Next soldier
Nyt on EndIf:it paikoillaan, ja koodia muutenkin korjailtu, muttei siltikään toimi. End riville kolme = ohjelma rullaa yhä vaikka maailmanloppuun asti. Voisiko joku oikeasti osaava auttaa?
(Yhtään endifiä ei muuten edes puuttunut, yksi oli vain väärässä kohtaa)
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
Miksi tulee "Operand type mismatch. You can't perform this mathematical operation to these operands. " Eli yritän laskea jotain? vaikka eihän tuossa tehdä mitään "laitonta"?
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee