Kezdőoldal » Számítástechnika » Programozás » Ebben az unity scriptben...

Ebben az unity scriptben miért van szükség a FixedUpdate ben a második sorra?

Figyelt kérdés

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?


2017. jún. 18. 20:09
 1/10 A kérdező kommentje:

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;

2017. jún. 18. 22:03
 2/10 anonim ***** válasza:
Mert framerate független kódot akarsz, pláne fizika alapú mozgáshoz. A Time.deltaTime nélkül ha lassan fut a program sokkal kisebb erő hat a testre mint máskor - ha gyorsan akkor fixedupdate alatt tök mindegy, de mindig így érdemes csinálni, biztonságosabb.
2017. jún. 18. 23:08
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:

É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

2017. jún. 19. 00:38
 4/10 A kérdező kommentje:

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?

2017. jún. 19. 00:42
 5/10 anonim ***** válasza:
Az első sorban a sebességet aktualizálja a gyorsulásnal megfelelően, a másodikban a pozíciót a sebességnek megfelelően. Mindkettőt deltatime szerint! Felütsz egy alap mechanika könyvet és látod miért: gyorsuló mozgás esetén a sebesség az odő első deriváltja, a pozíció (út) a második. A te kódod nem fog gyorsuló mozgást eredményezni.
2017. jún. 19. 06:05
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:

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.

2017. jún. 19. 12:36
 7/10 anonim ***** válasza:

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.

2017. jún. 19. 13:54
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:

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.

2017. jún. 19. 16:05
 9/10 A kérdező kommentje:

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.

2017. jún. 19. 16:13
 10/10 A kérdező kommentje:
és ez miatt nem értem továbbra sem hogy miért lett az eredetiben a második sor ha ez nélkül is ugyanúgy gyorsuló zuhanást kapunk.
2017. jún. 19. 16:15

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!