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

Juju 16 years, 1 month ago

Is the code for the mines exactly the same as that for the weapons?

Mordi 16 years, 1 month ago

It's almost exactly the same. As for the physics-handling, they are identical.

Castypher 16 years, 1 month ago

Ask marbs about GMPhysics, he's one of the best people I know.

But remember that currently, there isn't a compatible GMPhysics DLL for GM7, unless I'm a bit out of date. Since everyone states how much they hate GM7, I'm going to assume you're using 6, in which case you talk to marbs.

But unfortunately, I think marbs said something about taking a break from 64Digits. You might not find him around.

Mordi 16 years, 1 month ago

I'm using the DLL with GM7. Seems to work perfectly, except for this little bug… =(

Juju 16 years, 1 month ago

Aaah right, that'd explain it. If you're using Windows XP, I'd thoroughly recommend using GM6.1 instead as the current GMPhysics engine for GM7 lacks a great number of features and documentation.

Mordi 16 years, 1 month ago

DOH! There's no way to reverse.

Unless there is some sort of GM7 to GM6 converter?

Mordi 16 years, 1 month ago

"THIS BLOG HAS BEEN TAGGED:

Please refrain from being rude to other members. Failure to follow this rule will result in penalties."

What the heck? The mods around here are _really_ immature…

flashback 16 years, 1 month ago

Don't delete staff posts.

Mordi 16 years, 1 month ago

Even when the post is totally unecessary?

Why don't you disable the option to do so if you don't want me to do it? :/

flashback 16 years, 1 month ago

If you want serious help, you don't post on a general blog site for it, because you will get people making jokes.

Because we trust people to have an IQ over 40.