Got physics? *Solved*

Posted by Mordi on Oct. 10, 2008, 9:56 a.m.

Do you know anything about GMPhysics? I have a slight annoying problem to deal with in a small game I am making.

I have made a level editor where you can place objects. The weapons, which I made a long time ago, don't fall through the floor. This week I made mines, but they fall through the floor when they are created at level-startup. The thing is, weapons and mines are created in the same script (at the same time), but when mines are created in-game (not at level-startup) they don't fall through the floor.

Here is the code for all the objects involved in this bug:

Quote:
Information about object: o_block

Sprite: m_block

Solid: true

Visible: true

Depth: -2

Persistent: false

Parent: o_solidparent

Mask: m_block

Create Event:

execute code:

h = create_body(x,y,STATIC,SHAPE_BOX,image_xscale*64,i

mage_yscale*64);

set_body_rotation(h, image_angle);

grass = true;

obj = object_index;

Draw Event:

execute code:

draw_sprite_ext(s_ground,0,x,y,image_xscale,image_

yscale,image_angle,c_white,1);

if (grass = true) { draw_sprite_ext(s_grass,0,x,y,image_xscale,image_y

scale,image_angle,c_white,1) }

Quote:
Information about object: o_mine

Sprite: s_mine

Solid: false

Visible: true

Depth: -3

Persistent: false

Parent: o_object_parent

Mask: <same as sprite>

Create Event:

execute code:

h = create_body(x,y,0.5,SHAPE_BOX,sprite_width,sprite_

height);

set_body_collide_ext(h);

obj = object_index;

image_speed = 0.2;

radius = 200; //Bomb detection and explosion radius

damage = 38; //Amount of damage the mine makes

soundTimer = 0;

soundInterval = 75;

sndTimer = global.snd_minetimer;

sndBoom = global.snd_mineexplode;

Destroy Event:

execute code:

sc_explode(x, y, radius, damage, sndBoom)

Alarm Event for alarm 0:

execute code:

instance_destroy();

End Step Event:

execute code:

if instance_exists(o_player)

{

if !(room = rm_editor)

{

//Check if player is close, so it can explode:

if (distance_to_object(o_player) < radius) and (alarm[0] = -1)

{

alarm[0] = room_speed * 1.7;

image_blend = c_red;

soundInterval = 10;

soundTimer = 10;

}

//Play constant beeping sound:

if (soundTimer = 0)

{

FMODSoundPlay3d(sndTimer,x,y);

soundTimer = soundInterval;

}

else

{

soundTimer -= 1;

}

}

}

As I said, everything works _except_ mines (when they are created at room start).

The sprite of the mine is about 40x15 or so.

Block is 64x64.

Anyone have a clue???

Here is the GMC topic: http://gmc.yoyogames.com/index.php?showtopic=400670

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

In other news, here is a song:

http://willhostforfood.com/users/Mordi/Mordi%20-%20I%20Should%20Have%20Told%20You%20[Noisy%20Pillars].mp3

Remix of a C64 chiptune.

Comments

eagly 16 years, 1 month ago

I like your avatar Mordi. :D

Grand-High Gamer 16 years, 1 month ago

Flashback is ao meanie.