Permalänk
Medlem

Konsistent förflyttning.

Låt oss säga att en fyrkant ska förflytta sig konsistent över skärmen när man trycker på piltangenterna up, ner, vänster, höger. Om x värdet ökar med 5 varje uppdatering höger tangenten är nedtryckt och y ökar med 5 varje gång nedåt pilen är nedtryckt så kommer fyrkanten förflytta sig (5^2+5^2)^0.5 längdenheter snett neråt (ungefär 7). Fyrkanten accelererar också så den börjar med hastigheten 1 och ökar med 1 varje uppdatering till 5 där den stannar. Hur ska man undgå detta problem? Jag programerar i java.

Permalänk
Medlem

Du kan väl bara inte tillåta att x eller y ökas ifall (hastigheten i x-led)x^2 + (hastigheten i y-led)y^2 >= 25.

Permalänk
Medlem

Jag antar att problemet är att när man förflyttar sig diagonalt så går det snabbare än om man går lodrätt eller vågrätt?
Lodrätt/vågrätt: 5
Diagonalt: ~7.2

Här borde du få lite kött på benen.
http://stackoverflow.com/questions/11075378/8-direction-consi...
http://gpsnippets.blogspot.se/2010/10/character-8-directional...
http://compsci.ca/v3/viewtopic.php?t=22993

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Inaktiv

Du får separera fart och riktning. Använd en vektor som du sätter till den riktningen du vill ha, sen normaliserar du den (dividerar komponenterna med längden) och multiplicerar med farten. Då får du en vektor (din hastighet) med rätt fart och rätt riktning. Denna adderar du sedan på positionen så ska det fungera som tänkt.

Om du håller inne upp och vänster till exempel, sätter du din vektor till +1 i y-led (om upp nu är i positiv y-riktning) och -1 i x-led (dvs. (1, -1)). Sedan normaliserar du den får du (0.707, -0.707) som du sedan kan multiplicera med din fart, 10 till exempel. Då får du (7.07, -7.07) som sedan kan addera på din position.

Permalänk
Hedersmedlem

Rensade tråden på lite onödiga inlägg som inte tillför något. Anmäl istället inlägg eller trådar som är olämpliga eller bryter mot regler.

Mvh
Moderator Shimonu