Karaktär ska springa långsammare baklänges

Permalänk

Karaktär ska springa långsammare baklänges

Har nyss börjat lära mig lite ActionScript 3.0
Följde den här guiden: http://www.emanueleferonato.com/2010/06/07/create-a-survival-...
Om jag nu vill att karaktären ska springa långsammare baklänges, hur ska jag göra då?
Tänkte att om man tog
player_speed=angle-walk_dir
walk_dir beror på vart man går (t.ex. går man uppåt så är walk_dir = 0, går man till höger så är walk_dir=2)
angle är spelarens rotation
Tanken är att om man går baklänges så ska det vara omvänt. walk_dir = 2 och angle = -2 kanske.
men nu är det ju så att det är en hårfin skillnad på -3 och 3 när man mäter spelarens rotation.
Hur fixar jag detta?

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

Jag hade gjort en koll om man rör sig bakåt och applicerat en procentuell förminskning av hastigheten. Typ 40% eller så.

Visa signatur

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

Permalänk
Medlem

Jag spelar cs och har lärt mig att man kan skriva "realistic_runspeed 1" så får du det rätt. Varsågod!

Permalänk
Medlem

Om vi säger att walk-dir 4 är lika med bakåt så kör en if sats som kollar om det är sant och är det det så ändrar du playerspeeden.

if (angle-walkdir == 4){
playerspeed =1;
}

Visa signatur

[ i7-8700K @ 5Ghz || CM MasterLiquid ml360r || 64GB DDR4 3200Mhz || MSI Z370Pro Carbon || KFA2 RTX 3080TI || EVGA Supernova G2 750W || Samsung 960 EVO || Lian Li pc-o11 Dynamic ]

Permalänk
Skrivet av Leedow:

Jag hade gjort en koll om man rör sig bakåt och applicerat en procentuell förminskning av hastigheten. Typ 40% eller så.

Det är ju inte det som är problemet. Jag vill ju veta när man springer åt motsatta hållet man är vänd mot.

Skrivet av m1n1h0p:

Jag spelar cs och har lärt mig att man kan skriva "realistic_runspeed 1" så får du det rätt. Varsågod!

Jaha, okej. Så nu är det bara att kopiera Source-Engine och implementera det i min Top-Down 2d shooter? Genialt.

Skrivet av Zentix:

Om vi säger att walk-dir 4 är lika med bakåt så kör en if sats som kollar om det är sant och är det det så ändrar du playerspeeden.

if (angle-walkdir == 4){
playerspeed =1;
}

Förutom att det inte är det som är problemet. Angle går ju från -3 till 3 om man flyttar karaktärens rotation med 1 millimeter om han är vänd mot botten.
Alltså om karaktären är nära botten så är det en hårfin millimeter som man ska flytta musen innan angle går från -3 till 3.

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem

Är det som i demot att du går åt det håll du trycker på piltangenterna eller är uppåtpil = framåt ?
Du får väl lägga in ett intervall där playerspeed är reducerad, om rakt bakåt är -3/3 och du inte kan ändra den så att du har säg grader eller något annat mer logiskt sätt att kolla vinkeln så får kan du väl göra ett två-delat intervall där båda genererar minskad speed t.ex. -2 till -3 och 3 till 2

Permalänk
Medlem
Skrivet av Björnen123:

Det är ju inte det som är problemet. Jag vill ju veta när man springer åt motsatta hållet man är vänd mot.

Ok, jag missade vad du var ute efter.

Jag hade översatt riktningen man går i och riktningen dit musen pekar till hela grader. Då kan du jämföra fieldOfViewAngle med movementAngle och lägga in regler så som en procentuell sänkning av hastigheten när man från att gå framåt till"strafear" och till sist backar.

Jag är inte så påläst på Actionscript men det verkar finnas funktioner för att räkna ut grader enkelt. Övriga funktioner får man göra själv.

var fieldOfViewAngle = convertToFullDegrees(angle); //Returnerar värde mellan 0-360 var movementAngle = convertToFullDegrees(playerdirection); //Returnerar värde mellan 0-360 var degreeDiff = degreeDifferance(movementAngle,fieldOfViewAngle) //Räknar ut skillnaden i antal mellan två grader var degreeThreshold = 45; //Tolerans i antalet grader, vänster/höger riktning if (degreeDiff < degreeThreshold ) //Går framåt medan fov är inom 45 grader från vänster eller höger i färdriktningen else if (degreeDiff > degreeThreshold && degreeDiff < 90+degreeThreshold ) //Går sidleds medan fov är inom 45 grader från vänster eller höger i färdriktningen else if (degreeDiff > 90+degreeThreshold) //Går bakåt medan fov är inom 45 grader från vänster eller höger i färdriktningen

Visa signatur

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

Permalänk
Medlem
Skrivet av m1n1h0p:

Jag spelar cs och har lärt mig att man kan skriva "realistic_runspeed 1" så får du det rätt. Varsågod!

hahahahaha, vilken sköning!

Permalänk
Medlem
Skrivet av m1n1h0p:

Jag spelar cs och har lärt mig att man kan skriva "realistic_runspeed 1" så får du det rätt. Varsågod!

Visa signatur

https://einridi.bandcamp.com | https://soundcloud.com/einridiofficial

[ASUS 27"][5700X@stock w H115i Platinum][MSi X570S MAG Tomahawk][32GB 3600MHz Vengeance LPX][MSi GTX1080 Gaming X][Corsair RM750x V2][Corsair MP600 500GB][256GB 840 pro][850 EVO 500GB][NI Komplete Audio 6][ADAM T7V][BD DT-1770Pro 250ohm][Bitwig Studio 4&5][Reason 11][Maschine 2.13.0][NI Komplete A49][Arturia MiniLab mk2][NI Maschine JAM & Mikro mk3][Corsair AIR 540][Windows 11 Pro]
"If they're going to pirate somebody, we want it to be us rather than somebody else." -- Microsoft Business Group President Jeff Raikes

Permalänk
Skrivet av Leedow:

Ok, jag missade vad du var ute efter.

Jag hade översatt riktningen man går i och riktningen dit musen pekar till hela grader. Då kan du jämföra fieldOfViewAngle med movementAngle och lägga in regler så som en procentuell sänkning av hastigheten när man från att gå framåt till"strafear" och till sist backar.

Jag är inte så påläst på Actionscript men det verkar finnas funktioner för att räkna ut grader enkelt. Övriga funktioner får man göra själv.

var fieldOfViewAngle = convertToFullDegrees(angle); //Returnerar värde mellan 0-360 var movementAngle = convertToFullDegrees(playerdirection); //Returnerar värde mellan 0-360 var degreeDiff = degreeDifferance(movementAngle,fieldOfViewAngle) //Räknar ut skillnaden i antal mellan två grader var degreeThreshold = 45; //Tolerans i antalet grader, vänster/höger riktning if (degreeDiff < degreeThreshold ) //Går framåt medan fov är inom 45 grader från vänster eller höger i färdriktningen else if (degreeDiff > degreeThreshold && degreeDiff < 90+degreeThreshold ) //Går sidleds medan fov är inom 45 grader från vänster eller höger i färdriktningen else if (degreeDiff > 90+degreeThreshold) //Går bakåt medan fov är inom 45 grader från vänster eller höger i färdriktningen

Tack! Det är ju jag som konverterar graderna till mindre tal så jag antar att det är lätt att göra det du sa.
Får se om jag kommer vidare

Visa signatur

Intel 2500k @ 3,3ghz ● ASUS 6870 1GB Crossfire ● ASUS Sabertooth P67 ● XFX 750w ● 4Gb DDR3 ● Bitfenix Outlaw

Permalänk
Medlem
Skrivet av Björnen123:

Tack! Det är ju jag som konverterar graderna till mindre tal så jag antar att det är lätt att göra det du sa.
Får se om jag kommer vidare

Ingen fara och lycka till. Jag glömde säga att koden var otestad men det kanske du förstår.
Återkom gärna oavsett resultat.

Visa signatur

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