Paras vastaus
2D-tasohyppelyyn (sivuttain) yksinkertaisin tapa ajatella miten Tämän tekeminen saisi pelaajat muuttumaan ja saisi Sprite Rendererin kääntämään tuolla tavalla ja Kääntäjän nopeuden kääntäen samalla tavalla. Vihollisen tasohyppelyohjelmassa ei todellakaan löydetä polkua. Esimerkki voisi olla:
[SerializeField] Transform player;
[SerializeField] SpriteRenderer rend;
[SerializeField] float speed;
void Update()
{
if(player.pos.x < transform.position.x)
{
renderer.flipX = true;
transform.Translate(new Vector2(-speed, 0f));
}
else
{
renderer.flipX = false;
transform.Translate(new Vector2(speed, 0f));
}
Vastaus
Yksi projekteista, joissa työskentelin, kun minulla oli aikaa (= työpaikkojen välillä: d), oli hyvin klassinen, vanhan koulun matala taso 2d sprite-pohjainen pelimoottori, sopii tasohyppelylaitteille ja vastaaville. Vain siksi.
Se on todella hauska käsitellä, kun kirjoitat oman 2d-moottorin, se on tarpeeksi pieni, jotta voit tehdä siitä työskennellä itse muutaman kuukauden kuluessa Yli vuosia, joten se ei ole kuin iso 3D-moottori, jossa se on piirakka taivaalla -projekti, jossa ei koskaan saa tehdä peliä. Oman 2d-moottorin pyörittäminen on silti melko kohtuullista, jos vähän anakronistista.
Enimmäkseen pelimoottorini (kirjoitettu C ++: lla, tavallisen Win32: n päälle) koostui: - grafiikkaluokasta (matalan tason kangas) jossa voit piirtää viivoja, monikulmioita tai raakapikseleitä) - sprite-luokka, animaatioiden ja spritien piirtämiseen yhdistämällä kuvan kappaleita, sekä piirtämällä bittikartoitettua tekstiä - tileet-luokka, laatan taustojen hallintaan - käyttöliittymäluokan hierarkia yksinkertaisilla komponenteilla ( painikkeet, paneelit, luetteloruutu jne.) - yksinkertainen fysiikkamoottori (ei mitään hienoa, vain jotain, jonka avulla voit siirtää esineitä ympäri jonkin verran ja laukaista törmäyksen muiden esineiden ja maisemien kanssa) - yksinkertainen ääniluokka - pääpeli silmukan / pelin tilakone, joka sitoi kaiken tämän yhteen, lähetti hiiri- ja näppäimistöviestejä, lähetti tapahtumia käyttöliittymäkohteisiin, renderöi kaikki spritit, päivitti kaikki fysiikan objektit jne. .. se on pohjimmiltaan peli. Jos haluat ymmärtää, miten peruspelit (ja implisiittisesti pelimoottorit) toimivat, keskity tähän alueeseen, pelitilan, pelitapahtumien ja pääpäivityksen / piirtosilmukan hallintaan. - alustasta riippuvainen Win32-piirustuskoodi vain pienessä tiedostossa.
Kirjoitin myös joitain tiedostomuuntimia, laatatieditorin ja animaatioeditorin .NET / C ++ / CLI: n kanssa. Todellakin suurin osa työstä oli sprite- ja fysiikkatuntien sekä sprite-editorin kirjoittaminen.