Skocz do zawartości

rozpędzanie


Rekomendowane odpowiedzi

mam 2 pytania

 

1. Jak zrobić żeby obiekt poruszał się do góry(jeśli nie ma grawitacji). Takim sposobem jak np. w lewo to jest taki kod:

if place_free(x-4,y) 
{x-=4}

2.Jak zrobić w wyścigówce aby samochód (obiekt) rozpędzał sie powoli a nie że od razu jedzie tak szybko?

 

Z góry dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

1. oś x poziomo, oś y pionowo

if place_free(x,y-4)
{y-=4;}

 

2. rozpędzanie czyli zwiększanie prędkości prostoliniowo do czasu aż osiągnie wymaganą prękość (to sie nazywa przesterowanie i potem jest już nieliniowa praca :P jak we wzmacniaczu oprecyjnym)

if speed<5 then speed+=0.5;

 

edit

Tymon był szybszy, ale drugie zadanie inaczej rozwiązałem :P

Odnośnik do komentarza
Udostępnij na innych stronach

wpisałem ten pierwszy przykład Tymona(chodzi o rozpędzanie) no i jest ok, ale potem postać się nie zatrzymuje jak puszcze przycisk tylko jedzie dalej.

 

Mam jeszcze jedno pytanie oprócz tego. Jak zrobić, żeby animacja była inna jak wciskam prawy przycisk a inna jak lewy itd. No i oczywiście nie działa się cały czas tylko właśnie wtedy gdy wciskam przycisk

Odnośnik do komentarza
Udostępnij na innych stronach

Do daj

friction = .1;

jak przycisk nie jest wciśnięty, gdy jest

friction = 0;

 

EDIT

if( keyboard_check( vk_left ) )
     sprite_index = animacja_lewo;
else
if( keyboard_check( vk_right ) )
     sprite_index = animacja_prawo;
else     
     sprite_index = animacja;

Odnośnik do komentarza
Udostępnij na innych stronach

Dobra to z ropędzaniem jest już ok. Teraz nie wiem jak zrobić z tą animacją. Bo robię wyścigówkę no i samochód musi skręcać. Tymon napisał:

if( keyboard_check( vk_left ) )

sprite_index = animacja_lewo;

else

if( keyboard_check( vk_right ) )

sprite_index = animacja_prawo;

else

sprite_index = animacja;

 

ale jak mam oddzielić animację w prawo od animacji w lewo itd.?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 miesiące temu...

Sorry, że odświerzam stary temat, ale nie widzialem sensu zakładać nowego, ponieważ w tym jest wszystko napisane co i jak. A więc mam pytanie apropo tego rozpędzania. Jak zrobić, że gdy obiekt uzyska speed załóżmy 10 to juz dalej sie nie rozpędza to jest jego maksymalna prędkość?

Mam nadzieje że nie dostane za to warna :(

Odnośnik do komentarza
Udostępnij na innych stronach

//  Obrót
    image_single = direction * image_number / 360;
    
//  Skręcanie    
    if( keyboard_check( vk_left ) ) then direction += 4;
    if( keyboard_check( vk_right ) ) then direction -= 4;

//  Rozpedzanie       
    if( keyboard_check( vk_up ) ) 
{
        speed += .1;
        friction = 0;
}
else
        friction = .1; 
        
    if speed<10
{
Rozpedzanie
}
else
speed=10

Co tu jest nie tak że wyskakuje taki błąd:

FATAL ERROR in

action number 1

of Step Event

for object auto:

 

COMPILATION ERROR in code action

Error in code at line 20:

 

}

 

at position 2: Assignment operator expected.

??

Odnośnik do komentarza
Udostępnij na innych stronach

lol...

 

//  Obrót
    image_single = direction * image_number / 360;
    
//  Skręcanie    
    if( keyboard_check( vk_left ) ) then direction += 4;
    if( keyboard_check( vk_right ) ) then direction -= 4;

//  Rozpedzanie      
    if( keyboard_check( vk_up ) )
{
        if(speed<10)
        speed += .1;
        else
        speed=10;
        friction = 0;
}
else
        friction = .1;

Odnośnik do komentarza
Udostępnij na innych stronach

Sory za double posta, ale znowu mam kłopot. Bo dodałem żeby to samo było gdy gdy sie wciśnie przycisk w dół. I ten kod wygląda teraz tak:

//  Obrót
    image_single = direction * image_number / 360;
    
//  Skręcanie    
    if( keyboard_check( vk_left ) ) then direction += 4;
    if( keyboard_check( vk_right ) ) then direction -= 4;

//  Rozpedzanie góra    
    if( keyboard_check( vk_up ) ) 
{
        if(speed<10)
        speed += .1;
        else
        speed=10;
        friction = 0; 
}
else
        friction = .1;

// Rozpędzanie dół      
                
    if( keyboard_check( vk_down ) )
{
        if(speed<5)
        speed += .1;
        else
        speed=5;
        friction = 0;
}
else
        friction = .1;

I teraz jak przyciskuje strzalke w gore nic sie nie dzieje. Co tu zepsułem? :D

Odnośnik do komentarza
Udostępnij na innych stronach

2.Jak zrobić w wyścigówce aby samochód (obiekt) rozpędzał sie powoli a nie że od razu jedzie tak szybko?

 

 

 

kod jest prosty , nie wpisujesz speed=np.5 km/h tylko speed+=1 km/h

 

Aha i jeszcze jedno, jeśli nie chcesz być wyśmiany za to że jestes anty cool, używaj wartości w mph/h . Tak naprawde to teraz jest treendy, gdyż pochodzi z ameryki, a wszystko co pochodzi z U S A jest craazy.

Odnośnik do komentarza
Udostępnij na innych stronach

if( keyboard_check( vk_down ) )

{

if speed<5

{friction = 0

speed += 1}

else

{speed=5}

}

else

{friction = 1}

 

...i trzymając się tej kolejności i zasady przepisał dla "up". :)

 

if( keyboard_check( vk_up ) )

{

if(speed<10)

speed += .1;

else

speed=10;

friction = 0;

}

else

friction = .1;

 

A tak w ogóle-to up i down to są dwa stopnie prędkości? Bo hamowanie to down to to nie jest. ;p

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli jak to ma być? I jeszcze jedno, jak zrobić, że gdy samochód stoi to nie może się obracać?

 

if( keyboard_check( vk_left ) ) then direction += 4;

if( keyboard_check( vk_right ) ) then direction -= 4;

 

Dopisz tu tylko warunek if speed<>0 ;D i weź ten kod wyżej daj po warunku i go w klamry.

Odnośnik do komentarza
Udostępnij na innych stronach

if speed<>0
{
if keyboard_check(vk_left)
{direction+=4}
if keyboard check(vk_right)
{direction-=4}
}

 

Musi działać. :) Nie ma siły, by było inaczej.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...