Hallo ihrs.
Bin mal an einem kleinen evtl hinterher doch größeren Jump'n run.
Jedoch hab ich ein Problem mit diesen beiden Funktionen.
Diesen Code verwende ich im StepEvent:
Fing an, dass bei image_single der Wert immer -1 ist..
Hab ich mit image_index weiter gemacht, wie es eigentlich nie der Fall ist.
Also dann. Benutze image_index und geht alles.
Das sprite wird schön abgespielt (6 Subimages).
Wenn ich nicht rechts oder links drücke, ändert sich das Sprite in halten und man bleibt halt stehen und sieht das entsprechende Bild.
So nun hab ich das Problem, dass ich, wenn ich auf einen Gegner springe so abfeder (wie bei Supermario) also automatisch nach oben springe. Doch dann geht die Variable image_index in den Minusbereich und sinkt immer weiter.
Wieso ist das so und wieso steht bei image_single sofort immer -1? Für mich ergibt das keinen Sinn und hoffe mir kann jemand helfen.
EDIT: Ich hoffe es stoßt noch jemand auf diesen Thread, aber poste mal einen Teil der Einstellungen der Spielfigur:
Information about object: player
Sprite: halten
Solid: false
Visible: true
Depth: -1
Persistent: false
Parent: <no parent>
Mask: sprite2
Create Event:
execute code:
image_speed=.2
dir=1
Step Event:
execute code:
if place_free(x,y+1) gravity=1
else gravity=0
if keyboard_check(vk_left){
if place_free(x-4,y)x-=4
dir=-1
image_xscale=dir}
if keyboard_check(vk_right){
if place_free(x+4,y)x+=4
dir=1
image_xscale=dir}
if !keyboard_check(vk_left)&!keyboard_check(vk_right) sprite_index=halten
else sprite_index=laufen
Collision Event with object gegner:
execute code:
if vspeed>0
{
with other instance_destroy()
//vspeed=-5
}
Collision Event with object bug_tot:
execute code:
if vspeed>0
{
if x<other.x {other.hspeed=6;image_speed=-.5}
else {other.hspeed=-6;other.image_speed=.5}
}
Draw Event:
execute code:
draw_sprite_ext(sprite_index,floor(image_index),x,y,image_xscale,image_yscale,0,c_white,1)
draw_set_blend_mode(bm_add)
if floor(image_index)=0 || floor(image_index)=3 part_emitter_region(global.ps,global.em,x+dir*11,x+dir*11,y+5,y+5,ps_shape_ellipse,ps_distr_gaussian)
else if floor(image_index)=1 || floor(image_index)=4 part_emitter_region(global.ps,global.em,x+dir*11,x+dir*11,y+4,y+4,ps_shape_ellipse,ps_distr_gaussian)
else if floor(image_index)=2 || floor(image_index)=5 part_emitter_region(global.ps,global.em,x+dir*9,x+dir*9,y+1,y+1,ps_shape_ellipse,ps_distr_gaussian)
draw_set_blend_mode(bm_normal)
part_emitter_burst(global.ps,global.em,global.bling,6)
draw_text_color(0,0,floor(image_index),c_white,c_white,c_white,c_white,1)
draw_text_color(0,16,image_single,c_white,c_white,c_white,c_white,1)
Zudem muss ich sagen, dass das Problem erst nach dem glaube dritten kaputtgesprungenen Gegner kommt.
Auf jeden Fall nicht sofort..
Noch ein Edit:
Und zwar hab ich ins CreateEvent noch image_single=0 reingeschrieben und schwups geht die animation nicht mehr, obwohl das nix damit zu tun hat.. Und sowieso nur im CreateEvent.. Ich verstehs nicht...
Letzter Edit xD..
Habs jetzt geschafft, indem ich mich dann doch dazu entschieden hab, jeweils ein Sprite für links und eins für rechts zu machen.
Dennoch würde ich mich über eine Aufklärung freuen;)
Bin mal an einem kleinen evtl hinterher doch größeren Jump'n run.
Jedoch hab ich ein Problem mit diesen beiden Funktionen.
Diesen Code verwende ich im StepEvent:
Fing an, dass bei image_single der Wert immer -1 ist..
Hab ich mit image_index weiter gemacht, wie es eigentlich nie der Fall ist.
Also dann. Benutze image_index und geht alles.
Das sprite wird schön abgespielt (6 Subimages).
Wenn ich nicht rechts oder links drücke, ändert sich das Sprite in halten und man bleibt halt stehen und sieht das entsprechende Bild.
So nun hab ich das Problem, dass ich, wenn ich auf einen Gegner springe so abfeder (wie bei Supermario) also automatisch nach oben springe. Doch dann geht die Variable image_index in den Minusbereich und sinkt immer weiter.
Wieso ist das so und wieso steht bei image_single sofort immer -1? Für mich ergibt das keinen Sinn und hoffe mir kann jemand helfen.
EDIT: Ich hoffe es stoßt noch jemand auf diesen Thread, aber poste mal einen Teil der Einstellungen der Spielfigur:
Information about object: player
Sprite: halten
Solid: false
Visible: true
Depth: -1
Persistent: false
Parent: <no parent>
Mask: sprite2
Create Event:
execute code:
image_speed=.2
dir=1
Step Event:
execute code:
if place_free(x,y+1) gravity=1
else gravity=0
if keyboard_check(vk_left){
if place_free(x-4,y)x-=4
dir=-1
image_xscale=dir}
if keyboard_check(vk_right){
if place_free(x+4,y)x+=4
dir=1
image_xscale=dir}
if !keyboard_check(vk_left)&!keyboard_check(vk_right) sprite_index=halten
else sprite_index=laufen
Collision Event with object gegner:
execute code:
if vspeed>0
{
with other instance_destroy()
//vspeed=-5
}
Collision Event with object bug_tot:
execute code:
if vspeed>0
{
if x<other.x {other.hspeed=6;image_speed=-.5}
else {other.hspeed=-6;other.image_speed=.5}
}
Draw Event:
execute code:
draw_sprite_ext(sprite_index,floor(image_index),x,y,image_xscale,image_yscale,0,c_white,1)
draw_set_blend_mode(bm_add)
if floor(image_index)=0 || floor(image_index)=3 part_emitter_region(global.ps,global.em,x+dir*11,x+dir*11,y+5,y+5,ps_shape_ellipse,ps_distr_gaussian)
else if floor(image_index)=1 || floor(image_index)=4 part_emitter_region(global.ps,global.em,x+dir*11,x+dir*11,y+4,y+4,ps_shape_ellipse,ps_distr_gaussian)
else if floor(image_index)=2 || floor(image_index)=5 part_emitter_region(global.ps,global.em,x+dir*9,x+dir*9,y+1,y+1,ps_shape_ellipse,ps_distr_gaussian)
draw_set_blend_mode(bm_normal)
part_emitter_burst(global.ps,global.em,global.bling,6)
draw_text_color(0,0,floor(image_index),c_white,c_white,c_white,c_white,1)
draw_text_color(0,16,image_single,c_white,c_white,c_white,c_white,1)
Zudem muss ich sagen, dass das Problem erst nach dem glaube dritten kaputtgesprungenen Gegner kommt.
Auf jeden Fall nicht sofort..
Noch ein Edit:
Und zwar hab ich ins CreateEvent noch image_single=0 reingeschrieben und schwups geht die animation nicht mehr, obwohl das nix damit zu tun hat.. Und sowieso nur im CreateEvent.. Ich verstehs nicht...

Letzter Edit xD..
Habs jetzt geschafft, indem ich mich dann doch dazu entschieden hab, jeweils ein Sprite für links und eins für rechts zu machen.
Dennoch würde ich mich über eine Aufklärung freuen;)
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Superdaniel ()
vielleicht hast du ja die fehlermeldungen in deinem spiel ausgeschaltet, sodass dir das nich aufgefallen is, kann ja sein. aber ich würde sowieso anstelle von && ein || oder ein "or" schreiben
Noch was anderes. Ich weiß nicht, ob man &&! machen könnte?!