game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Beginners (Moderators: Erik Leppen, ericlegomeer, BlueMoonProductions)
| | |-+  topdown: schuin net zo snel bewegen [OPGELOST]
Pagina's: [1]
« vorige volgende »
Print
Advertenties

Stijnio
Gebruiker

Offline Offline

Berichten: 159


« Gepost op: 29 April 2010, 10:25:13 »

Ik ben een topdown spel aan het maken.
Het is in mijn spel belangrijk dat je diagonaal net zo snel beweegt als gewoon horizontaal en verticaal. Ik wil dus in acht richtingen kunnen bewegen, en alle kanten op net zo snel.
Ik heb het forum al aardig afgezocht, maar ik heb niks kunnen vinden wat hier direct een oplossing voor heeft. Ik heb zelf ook al wat zitten klooien, maar het lukt gewoon niet.  Twijfelachtig
Kan iemand mij helpen?

mvg Stijn

« Laatste verandering: 30 April 2010, 08:42:37 door Stijnio »

Evade, Avoid, Survive! - Kun jij alles overleven en het einde bereiken?

Laser Evasion - Hoe lang overleef jij de lasers?
Naar boven Gelogd

generaallucas
Gebruiker


Offline Offline

Berichten: 2900

Verhalen: klaar terwijl u wacht.


WWW
« Antwoord #1 Gepost op: 29 April 2010, 10:37:35 »

gebruik gewoon speed en direction ipv hspeed en vspeed, en dan ga je diagonaal net zo hard als naar links, rechts, boven en beneden.


Actionscript 3 - C++ - C# - CSS3 - GML - HTML5 - Javascript - PHP - SQL - Visual Basic - VTask

3DS Max(VRay), Photoshop, Illustrator, Flash, Irrlicht, SDL, CML, OpenGL, Phonegap, Cordova
Naar boven Gelogd

Stijnio
Gebruiker

Offline Offline

Berichten: 159


« Antwoord #2 Gepost op: 29 April 2010, 10:40:21 »

Zover was ik ook al.
Maar hoe krijg ik dit in een code, dat als ik links indruk hij naar links gaat, en als ik links en boven indruk dat hij dan direction = 135 doet.
En dan voor alle acht richtingen.


Evade, Avoid, Survive! - Kun jij alles overleven en het einde bereiken?

Laser Evasion - Hoe lang overleef jij de lasers?
Naar boven Gelogd

generaallucas
Gebruiker


Offline Offline

Berichten: 2900

Verhalen: klaar terwijl u wacht.


WWW
« Antwoord #3 Gepost op: 29 April 2010, 12:28:44 »

step event:
GML:
if keyboard_check_direct(vk_left)
{
   if keyboard_check_direct(vk_up)
   {
       direction = 135
       speed=5
   }
   else
   if keyboard_check_direct(vk_down)
   {
      direction = 225
      speed=5
   }
   else
   {
       direction = 90
       speed=5
   }
}
else
if keyboard_check_direct(vk_right)
{
   if keyboard_check_direct(vk_up)
   {
       direction = 45
       speed=5
   }
   else
   if keyboard_check_direct(vk_down)
   {
      direction = 315
       speed=5
   }
   else
   {
       direction = 0
       speed=5
   }
}
else
if keyboard_check_direct(vk_up)
{
  direction = 90
  speed = 5
}
else
if keyboard_check_direct(vk_down)
{
  direction = 270
  speed = 5
}


Actionscript 3 - C++ - C# - CSS3 - GML - HTML5 - Javascript - PHP - SQL - Visual Basic - VTask

3DS Max(VRay), Photoshop, Illustrator, Flash, Irrlicht, SDL, CML, OpenGL, Phonegap, Cordova
Naar boven Gelogd

Stijnio
Gebruiker

Offline Offline

Berichten: 159


« Antwoord #4 Gepost op: 29 April 2010, 12:34:00 »

ik ga dit proberen

bedankt  Blij


Evade, Avoid, Survive! - Kun jij alles overleven en het einde bereiken?

Laser Evasion - Hoe lang overleef jij de lasers?
Naar boven Gelogd

deadmaker
Gebruiker


Offline Offline

Berichten: 539

op naar de 500:D


« Antwoord #5 Gepost op: 29 April 2010, 13:40:22 »

wrm staan die else'en ertussen?


Mijn 500ste bericht!
wrm staan die else'en ertussen?
Nummer 174 met aantal berichten:D
Naar boven Gelogd

lucb1e
Gebruiker


Offline Offline

Berichten: 4554


WWW
« Antwoord #6 Gepost op: 29 April 2010, 18:07:37 »

deadmaker, ik zou zeggen haal het weg en probeer wat dat doet Gemoedelijk


Naar boven Gelogd

Compor
Jurylid


Offline Offline

Berichten: 4662


« Antwoord #7 Gepost op: 29 April 2010, 19:20:34 »

Had ik ook.
Bij een reactie in deze tut stond het:
GML:
//scr_beweeg(op, neer, links, rechts, snelheid, richting)
//op, neer, links en rechts zijn bijv. vk_up of ord('W')

var k1, k2, k3, k4;
k1 = keyboard_check(argument0);
k2 = keyboard_check(argument1);
k3 = keyboard_check(argument2);
k4 = keyboard_check(argument3);
//if (k1+k2+k3+k4 > 2) //eventueel niets doen als er teveel toetsen ingedrukt worden
//  return false;

if ((k1|k2) & (k3|k4))
  argument4 *= sqrt(.5);

var vx, vy;
vx = lengthdir_x(argument4, argument5);
vy = lengthdir_y(argument4, argument5);

x += vx*(k1-k2)+vy*(k3-k4);
y += vy*(k1-k2)-vx*(k3-k4);
return true;

Of mijn manier:

Step Event:
GML:
//ini
left=keyboard_check(ord('A'))
right=keyboard_check(ord('D'))
up=keyboard_check(ord('W'))
down=keyboard_check(ord('S'))
//schuin
if  left and  up and !down and !right then {if x>32            then {x+=lengthdir_x(spd,135)}; if y>64             then {y+=lengthdir_y(spd,135)}}
if  left and !up and  down and !right then {if x>32            then {x+=lengthdir_x(spd,225)}; if y<room_height-64 then {y+=lengthdir_y(spd,225)}}
if !left and !up and  down and  right then {if x<room_width-32 then {x+=lengthdir_x(spd,315)}; if y<room_height-64 then {y+=lengthdir_y(spd,315)}}
if !left and  up and !down and  right then {if x<room_width-32 then {x+=lengthdir_x(spd,45) }; if y>64             then {y+=lengthdir_y(spd,45) }}
//recht

if  left and !up and !down and !right then {if x>32             then {x-=spd}}
if !left and  up and !down and !right then {if y>64             then {y-=spd}}
if !left and !up and  down and !right then {if y<room_height-64 then {y+=spd}}
if !left and !up and !down and  right then {if x<room_width-32  then {x+=spd}}
Beter te begrijpen, maar langere lap tekst en ik dacht ook trager.

Naar boven Gelogd

BlueMoonProductions
Globale moderator


Offline Offline

Berichten: 5636

Vanaf heden ook verkrijgbaar in groen en rood.


WWW
« Antwoord #8 Gepost op: 29 April 2010, 19:24:53 »

Zie hier..

Inclusief schuin evensnel bewegen.

Of wil je normaal topdown zonder de muis? Moment, edit zo.

GML:
///argumenten 0 tot 3 zijn respectievelijk links, rechts, boven, beneden
///argument4 is de snelheid :)
var sp;
sp=argument4
if keyboard_check(argument0) or keyboard_check(argument1)
{if keyboard_check(argument2) or keyboard_check(argument3)
 sp=sqrt(sqr(sp)+sqr(sp))}
x+=(keyboard_check(argument1)-keyboard_check(argument0))*sp
y+=(keyboard_check(argument3)-keyboard_check(argument2))*sp
Je kan het script bijvoorbeeld move noemen.

Dus bijvoorbeeld:
GML:
move(ord('A')),ord('D'),ord('W'),ord('S'),5)

« Laatste verandering: 29 April 2010, 19:37:55 door BlueMoonProductions »

Naar boven Gelogd

Stijnio
Gebruiker

Offline Offline

Berichten: 159


« Antwoord #9 Gepost op: 29 April 2010, 20:23:29 »

Bedankt allemaal, het is gelukt hoor.


Evade, Avoid, Survive! - Kun jij alles overleven en het einde bereiken?

Laser Evasion - Hoe lang overleef jij de lasers?
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2019 Nederlandse Game Maker Community