4 svar
162 visningar
Oskillz behöver inte mer hjälp
Oskillz 15
Postad: 1 mar 2017 17:52

Gradvis rotera en riktningsvektor (2D) mot ett mål

Hej, jag håller på med ett tank spel där jag vill kunna få mina tanks att rotera mot ett mål medan dom kör. Tankens riktningsvektor ska alltså rotera lite i taget tills dess att den pekar mot målet så att tanken måste svänga runt och inte kör rakt mot målet direkt.

Jag har gjort så att jag kan ta ut målets riktning genom att ta målets position minus tankens position och jag har även använt funktionen: Math.Atan2(currentDirection.Y, currentDirection.X) för att få vinkeln mellan min egen riktningsvektor och målets vektor.

Jag har hittills bara använt detta till att direkt sätta rotationen på tankens sprite när den får ett nytt mål men det resulterar ju i att den roterar direkt och åker rakt mot målet. Jag har sökt runt en hel del och försökt kolla upp lösningar på detta men har inte riktigt fått grepp om det.

Jag har någon ide om att använda en funktion som gör om en vinkel till en vektor för att då kunna öka min rotationsvinkel lite i taget och sen göra om den till en vektor och sätta den som min nya riktning. Vet inte om det är ett bra sätt att tackla det, men om någon annan har något tips på hur jag kan göra så lyssnar jag gärna :).

Robbas 34
Postad: 2 mar 2017 08:19

Du kanske kan göra någon form av begränsning att tankens vinkel bara kan ändras a grader för varje x enhet den rör sig framåt? 

Oskillz 15
Postad: 2 mar 2017 11:22

Jag lyckades få tanken att rotera tills dess att den är riktad mot målet, problemet är nu att eftersom tanken förflyttar sig samtidigt som den roterar så kommer den (i exemplet att den ska svänga runt och gå rakt bakåt) att liksom göra en u sväng och gå i motsatt riktning men inte korsa sin ursprungliga riktning där målet ligger utan gå parallellt med målet. Nån som har tips på hur jag kan lösa det?? 

Yngve 40561 – Livehjälpare
Postad: 2 mar 2017 11:55
Oskillz skrev :

Jag lyckades få tanken att rotera tills dess att den är riktad mot målet, problemet är nu att eftersom tanken förflyttar sig samtidigt som den roterar så kommer den (i exemplet att den ska svänga runt och gå rakt bakåt) att liksom göra en u sväng och gå i motsatt riktning men inte korsa sin ursprungliga riktning där målet ligger utan gå parallellt med målet. Nån som har tips på hur jag kan lösa det?? 

Du kan ju ta ut en ny riktning mot målet efter varje förändring av din egen position/riktning. Det är ju även samma problem om målet rör sig.

Oskillz 15
Postad: 2 mar 2017 16:47

Det funkade utmärkt att sätta riktningen mot målet i update :) tack för hjälpen!

Svara
Close