porque mi personaje se traba al colisionar abajo de un bloque?

En el create de mi personaje lo tengo así:

hspeed+=0
image_speed=0
salto=0


En el step así

if place_free(x,y+1) gravity=0.5
if not place_free(x,y+1) gravity=0

if !keyboard_check(vk_right) and !keyboard_check(vk_left)

  if hspeed < -0.1
 
  {
    hspeed += 0.1
   
  }

else if hspeed > 0.1


  {
    hspeed -= 0.1
   

  }
 
       if hspeed < 0.3 and hspeed > -0.3
  {
    hspeed = 0
 
}







En LEFT tengo esto

{if hspeed > -2.8

motion_add(180,0.3)
}


En Right tengo esto

{if hspeed < 2.8

motion_add(0,0.3)
}


En SPACE, con lel que salta mi personaje tengo esto

if not place_free(x,y+1) && salto=0 // Si no esta libre por que esta colisionando o alguna otra accion con otro objeto. Y el salto es 0
{
vspeed=-8 // Velocidad vertical -11, se pone - para ir hacia arria
salto=1}


Ahora en la colision con la caja, hice que al colisionar en sus costados rebote para la izquierda al estilo sonic pero de forma que si colisiona del lado izquierdo de la caja rebote hacia la derecha y si rebota de su lado derecho rebote hacia la derecha. Pero el problema es que si le pego de abajo se queda trabado,  debería colisionar como si fuera un techo o el suelo común

if x>=0 ///no se si estara bien utilizado este codigo como lo puse///
hspeed*=-1


Por las dudas dejo el adjunto








Cada día que pasa estoy mas enamorado de Holly Earl.

en la colision de los objetos 1 y 2 usalo asi:

if x>=0 {
move_contact_solid(direction,12);
vspeed=0
if not place_free(x+hspeed,y) {hspeed=hspeed*-1}
}

si ay problemas avisame
Es MeJoR MoRir ParADo QuE vIviR De RoDIllas

#2 Julio 05, 2012, 05:10:38 AM Ultima modificación: Julio 05, 2012, 05:12:12 AM por J.E.A
Si, surge otro problema jeje, pero ya casi esta quedando. Hice lo que dijiste, pero se queda pegado en el suelo que es el Object2 y no salta cuando presiono SPACE. Por eso el Object2 lo deje tal cual estaba y salta lo mas bien. Ahora el problema esta cuando mi personaje esta sobre el objeto con el que rebota, el Object1, le puse el codigo que me propusiste, si me voy encima no salta al presionar la tecla de salto, se queda pegado, pasa igual que en Object2  XD
Cada día que pasa estoy mas enamorado de Holly Earl.

lo siento  :-[  el codigo solo era al colisionar con el objeto 1
mmm pero para que salte cuando esta arriba cambialo entonces asi:

if x>=0 {
move_contact_solid(direction,12);
vspeed=0
v_id=other.id
if instance_place(x+hspeed,y,v_id) {hspeed=hspeed*-1}
if instance_place(x,y+1,v_id){
salto=0
if sprite_index=sprite3
sprite_index=sprite1

if sprite_index=sprite5
sprite_index=sprite2
}
}
Es MeJoR MoRir ParADo QuE vIviR De RoDIllas

Gracias! ahora quedo muy bien!!!  :D
Cada día que pasa estoy mas enamorado de Holly Earl.