Írj komponenst, lefelé gyorsít egy objektumot [SerializeField] változóban beállított gyorsulás érték szerint.
A beállított gyorsulás azt adja meg, mennyi tud változni a sebesség másodpercenként.
Ha a GameObject eléri a 0 magasságot, megáll.
A beállított gyorsulás azt adja meg, mennyi tud változni a sebesség másodpercenként.
A megoldáshoz ne használj RigidBody-t!
Írj komponenst, ami x tengelyen halad. Ha egy [SerializeField] változóban megadunk egy cél X értéket, akkor az objektum odamegy!
A komponensnek be kell állítani egy-egy [SerializeField] változóban egy gyorsulásértéket és egy maximális haladási sebességet.
A beállított max sebesség azt adja meg, legfeljebb mekkora utat tehet meg egy másodperc alatt a GameObject.
A beállított gyorsulás azt adja meg, mennyi tud változni a sebesség másodpercenként.
Ha a GameObject eléri a célját, akkor megáll.
A megoldáshoz ne használj RigidBody-t!
Írj komponenst, [SerializeField] változóban megadhatunk:
- egy másik Transform-ot, mint célt
- egy gyorsulás- és
- lassulásértéket
- valamint egy távolság határértéket.
A komponenst feladata, hogy megpróbálja határértéken belülre közelíteni a cél Transform-hoz.
Ha a cél a határértéken kívül van, akkor a cél irányába gyorsul.
Ha a cél a határértéken belül van, akkor akkor elkezd lassulni.
A beállított gyorsulás és lassulás azt adja meg mennyi tud változni a sebességvektor másodpercenként.
A határértéket rajzold ki gizmóval!
A megoldáshoz ne használj RigidBody-t!
Írj szöcske (Grasshopper) komponenst, ami gombnyomásra ugrál a lenyomott gomb által megadott irányba!
A komponensed nem mehet lejjebb 0 magasságnál!
Ha megnyomja a felhasználó a kurzorgombok egyikét, a komponens ugrik egyet a megfelelő irányba!
Az ugrás úgy történik, hogy kap egy függőleges sebességet az objektum és egy vízszinteset is a megadott irányba. A függőleges sebesség folyamatosan csökken, a vízszintes állandó marad addig a pontig, amig az y koordináta nagyobb, mint 0.
A megoldáshoz ne használj RigidBody-t!
A levegőben nem tud ugrani a szöcske.
Függőleges irányban gyakorlatilag gravitáció szimulációt kell írni. (Könnyebb, mint gondolnád)

Írj komponenst, a Flappy Bird mintájára.
Ha a játékos megnyomja az ugrás gombot, az objektum ugrik egyet és elkezd esni.
Újabb gombnyomásra újabb lökést kap az objektum függőleges irányban.
Ha az objektum elér egy maximum vagy minimum magasságot, akkor kiírja, hogy GAME OVER és vissza teszi az objektumot a két határérték közé.
Ha megnyomja a felhasználó az ugrás gombot, újra kezdődik a játék.
Gravitáció szimulációt kell írni!
A megoldáshoz ne használj RigidBody-t!
Tanulmányozd az Asteroids című 1979 by Atari arcade játékban az űrhajó mozgását.
Írj komponenst, ami egy objektumot annak mintájára mozgat.
A megoldáshoz ne használj RigidBody-t!
(Vonatkoztass el attól, hogy a hajó átteleportál a falon. Ez nem a feladat része.)
Írj bolygó (Planet) komponenst, aminek gravitációs hatása van kettő másik beállításban megadható bolygóra. Minden bolygónak van egy beállítható tömege is.
Minden test vonzza a másik kettő testet a Newtoni tömegvonzás törvénye szerint.
A megoldáshoz ne használj RigidBody-t!
Newton féle tömegvonzási törvény:
F=G⋅r2m1⋅m2F : Erő
m1 : Egyik test tömege
m2 : Másik Test tömege
r : két test távolsága
G : Newton féle gravitációs konstans
Értéke: 6.67430⋅10−11N⋅m2⋅kg2
Ti más értéket használjatok! Olyat, amivel a mozgás látszik kis számokon is.
Szóval az erő, ami két bolygó hat közt (egyikre és másikra is) az egyenesen arányos mind két bolygó tömegével, fordítottan arányos a kettő közti távolsággal és függ egy Newton gravitációs állandójától.
És mivel F=m⋅a (Newton második törvénye) (a : gyorsulás)
Ezért a gyorsulás egy testen: a=G⋅m2/r2
Tehát egy testen ható gyorsulás, amit egy másik test okoz rajta egyenesen arányos a másik test tömegével, fordítottan arányos a kettő közti távolság négyzetével és függ egy Newton gravitációs állandójától.
(Ha akarsz, oszthatsz a távolsággal a távolság négyzete helyett.)
(G értékét magad válaszd meg érzés szerint!)
Ha több test igy egyszerre hat egy testre a rajta ható eredő gyorsulásvektor a több egyedülálló gyorsulásvektor összege.
Írj bolygó (Planet) komponenst, aminek gravitációs hatása van minden többi bolygóra.
Minden bolygónak van egy beállítható tömege.
Minden test vonzza a többi testet a Newtoni tömegvonzás törvénye szerint.
A megoldáshoz ne használj RigidBody-t!
Newton féle tömegvonzási törvény:
F=G⋅r2m1⋅m2F : Erő
m1 : Egyik test tömege
m2 : Másik Test tömege
r : két test távolsága
G : Newton féle gravitációs konstans
Értéke: 6.67430⋅10−11N⋅m2⋅kg2
Ti más értéket használjatok! Olyat, amivel a mozgás látszik kis számokon is.
Szóval az erő, ami két bolygó hat közt (egyikre és másikra is) az egyenesen arányos mind két bolygó tömegével, fordítottan arányos a kettő közti távolsággal és függ egy Newton gravitációs állandójától.
És mivel F=m⋅a (Newton második törvénye) (a : gyorsulás)
Ezért a gyorsulás egy testen: a=G⋅m2/r2
Tehát egy testen ható gyorsulás, amit egy másik test okoz rajta egyenesen arányos a másik test tömegével, fordítottan arányos a kettő közti távolság négyzetével és függ egy Newton gravitációs állandójától.
(Ha akarsz, oszthatsz a távolsággal a távolság négyzete helyett.)
(G értékét magad válaszd meg érzés szerint!)
Ha több test igy egyszerre hat egy testre a rajta ható eredő gyorsulásvektor a több egyedülálló gyorsulásvektor összege.
A többi bolygó megtalálására használhatsz FindObjectsOfType függvényt
A megoldásomban az erő a távolsággal fordítottan arányos és nem a távolság négyzetével, mint az a valós fizikában lenne.
Ezzel érem el, hogy ne parittyázzák könnyedén ki egymást a bolygók.
Kirajzolom a sebességvektort is. Ez nem volt feladat.
A bolygók mérete reprezentálja a tömegüket. Ez nem volt feladat.
Írj metódust, ami egy Material-t kap paraméterben és visszaadja Rigidbody-k egy listáját.
A lista az összes olyan a Scene-ben megtalálható Rigidbody-t adja vissza, amikhez tartozik MeshRenderer és materiáljuk megegyezik a paraméterben megadottal!
List<Rigidbody> RigidbodiesWithTheSameMaterial(Material material)
{
var result = new List<Rigidbody>();
Rigidbody[] all = FindObjectsOfType<Rigidbody>();
foreach (Rigidbody rb in all)
{
MeshRenderer mr = rb.GetComponent<MeshRenderer>();
if (mr!= null && mr.material == material)
{
result.Add(rb);
}
}
return result;
}Írj komponenst, ami kiírja az objektum nevét, amire kattint a felhasználó az egérrel.
Írj komponenst, ami egy sugarat lő (Raycasting) saját pozíciójából lokális előre irányába!
A komponensnek [SerializeField] beállításként megadható GameObject-ek egy tömbje.
Ha a sugárvetés célt talált, akkor tömb elemeit felsorakoztatja a célzás és találat pontjai közé egyenlő távolságra. Ha a sugárvetés nem talált célt, a tömb elemeit inaktiválja!
Lehessen a komponensnek beállítani maximális távolságot!
A sugarat Gizmóval rajzold ki!
Írj olyan mágnes (Magent) komponenst, aminek beállításai közt szerepel, a pólusú (pozitív vagy negatív) és hogy mekkora az ereje.
Az azonos pólusú elemek taszítják egymást ez ellenkezők vonzzák egymást.
A vonzás mértéke a távolsággal csökken, a mágnesek erejével nő.
A megoldáshoz használhattok Rigidbody-t.
2D-ben oldottam meg a feladatot.
Megjelenítésre SpriteRenderer-t, ütközéshez CircleCollider-t használtam.
A megoldásomban a vonzó/ taszító erő egyenesen arányos mindkét pólusok erejével és fordítottan arányos a távolság négyzetével.
Írj komponenst, ami ha valahova kattintunk az egérrel ott “dobbant” egyet.
A dobbantás függőleges felfelé irányba meglöki a Rigidbody-kat.
A dobbantásnak van egy hatótáv, amin belül hat.
A hatótáv széléhez közeledve gyengül a lökés ereje.
Írj komponenst, ami saját maga körül egy beállítható sugarú gömbben módosítja a gravitációt.
A gravitáció módosításának mértéke és iránya egy vektor-ként állítható be.
A vizualizáció nem a feladat része
Készíts bombát, ami egy idő letelte után ellöki a körülötte lévő RigidBody-kat és megsemmisíti önmagát.
A robbanásnak van egy beállítható ereje és hatótávolsága.
A hatótáv széléhez közeledve gyengül a lökés ereje.
Írj komponenst, ami egy sugarat lő (Raycasting) saját pozíciójából lokális előre irányába!
A komponensnek [SerializeField] beállításként megadható egy GameObject, mint prototípus.
Ha a sugárvetés célt talált, akkor az objektum másolatait beteszi a célzás és találat pontja közé, úgy hogy az elemek beállítható d távolságban legyenek egymástól. Ha a sugárvetés nem talált célt, nem látszanak a célzó pontok!
Lehessen a komponensnek beállítani maximális távolságot!
A sugarat Gizmóval rajzold ki!
Írj komponenst, ami ha valahová kattint a játékos az egérrel, megpróbál a kattintás irányába ugrani!
Az ugrást úgy oldd meg, hogy erőt adsz RigidBody-hoz!
Az ugrás mindig függőlegesen mindig 45-fokos szögben történjen!
Az ugrás sebessége beállítható legyen!
Készíts komponenst, ami kirajzol egy ballisztikus pályát. Gizmóval vagy Line Renderer segítségével.
A ballisztikus pálya egy megadott sebességgel, megadott irányba elhajított test pontjainak összessége. (Nem kell minden pontot megadni, csak egy beállítható sűrűségű sorozatát a pontoknak.)
A pálya kiszámítása pillanatszerű legyen! A pálya kiszámításához nem kell valóban eldobni egy testet vagy valóban kivárni a szimuláció idejét.
A beállítható adatok:
Vector3 gravity; Mekkora a gravitációs gyorsulás mértéke és iránya?
Vector3 velocity = 5f; Kezdősebesség mértéke és iránya. Az irányra használható a kapcsolódó Transform komponens előre iránya.
Vector3 startPosition; Kiindulási pozíció. Használható a kapcsolódó Transform komponens pozíciója.
float maxTime = 2f; Milyen “hosszú” legyen a szimulált pálya időben megadva. Eldobástól számítva ennyi ideig szimulálunk.
float timeStep = 0.1f; A szimuláció legkisebb időegysége. (Olyasmi, mint a Time.deltaTime)
float drag = 0.1f; OPCIONÁLIS Közegellenállás. A tanult módon számítható.