Ebben az unity scriptben miért van szükség a FixedUpdate ben a második sorra?
Az első sorban a velocity értéke másodpercenként (gravitymodifier * Physics2d.gravity) vel növekszik és akkor ezt lehetne használni a deltapos.y helyett.
De nem így tesz a videóban miért?
Itt a kód:
velocity += gravityModifier * Physics2D.gravity * Time.deltaTime;
Vector2 deltaPosition = velocity * Time.deltaTime;
move = Vector2.up * deltaPosition.y;
Movement (move);
Ez van a FixedUpdate ban de minek a második sor?
Miért ne lehetne így:
velocity += gravityModifier * Physics2D.gravity * Time.deltaTime;
move = Vector2.up * velocity.y;
Movement (move);
Minek írta oda ezt:
Vector2 deltaPosition = velocity * Time.deltaTime;
Én nem a time.deltatimeról beszélek tudom hogy akkor kell használni ha framerate független kódot akarok. Nem ezt kérdeztem nem a deltatimera irányul a kérdésem hanem arra hogy miért szükséges ez a sor:
Vector2 deltaPosition = velocity * Time.deltaTime;
Ha az ezt megelőző sorban is ott a deltatime.
A második sort el lehetne hagyni teljesen és a move változóba pedig ez helyett: Vector2.up * deltaPosition.y; lehetne ez: Vector2.up * velocity.y
Jobban nem tudom elmagyarázni.
Ez a két sor a lényeg:
velocity += gravityModifier * Physics2D.gravity * Time.deltaTime;
Vector2 deltaPosition = velocity * Time.deltaTime;
A második sorban is ott a deltatime ahogy az elsőben de akkor a második sornak mi az értelme.
Ha így volna érteném:
velocity += gravityModifier * Physics2D.gravity;
Vector2 deltaPosition = velocity * Time.deltaTime;
de az eredeti kódban a második sor is deltatimeozva van ahogy az első is . Minek csinálja kétszer?
Nem érthető amit írsz mert kipróbáltam az én kódomat és gyorsít az objekten folyamatosan.
velocity += gravityModifier * Physics2D.gravity * Time.deltaTime;
move = Vector2.up * velocity.y;
Movement (move);
Láthatod hogy a velocity értéke nő folyamatosan ezért fog egyre gyorsabban zuhanni az objekt. += van ott.
Ezért továbbra sem értem hogy az eredeti verzióban minek a második sor.
Soha sem *szükséges* külön változóba menteni az értékeket, azért csinálod hogy olvashatóbb legyen a kód(vagy optimalizálás miatt, de itt nyilván nem erről van szó).
Movement( ((velocity + gravityModifier * Physics2D.gravity * Time.deltaTime) * Time.deltaTime).y * Vector2.up )
Így nézne ki egy sorban, egy nagy katyvasz az egész.
Komolyan mondom fejfájdítóak vagytok.
Ki is kéne próbálnod azt amit beírtál most és az eredeti kódot is s akkor látnád hogy az originál egyre gyorsuló zuhanást eredményez a te kódod pedig állandó sebességen tartva az objektet és így zuhan.
A másik dolog pedig az hogy nem értem miféle válasz akart ez lenni a kérdésemre mert attól hogy egy nagy kifejezést csináltál kettőből még továbbra sem ad magyarázatot arra hogy az a kódrészletet amire kíváncsi vagyok miféle értelme van hisz az nélkül is működik úgy ahogy kéne.
Scriba nevű válaszoló adott eddig a legjobb választ a többiek teljesen másról beszélnek mint ami a kérdés.
De még a Scriba is mondott hülyeség mégpedig azt hogy az én kódom nem eredményez gyorsuló zuhanást míg az eredeti igen ez pedig nem igaz mert az én verzióm is ahogy az eredeti is gyorsuló zuhanást eredményez és ez miatt nem értem továbbra sem hogy miért lett az eredetiben a második sor.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!