How can I stop New Object actuator's spawn from inheriting parent's scale?

I’m trying to imitate the classic first-person-shooting-cubes-out-of-your-face motif.

My “person” consists of a body cube, a head cube, an “Empty” cube and the camera. The camera and the Empty are parented to the head, and the head is parented to the body. An actuator attached to the Empty spawns cubes when you scroll the scrollwheel. Mouse movement moves the head and, with it, the camera and the Empty.

The problem is that the projectiles inherit their scale from the body. I want them to inherit the scale of the original (CubeProjectile on layer 2). How can I do this?

  • Chris

Attachments

cubefight.blend (591 KB)

You should make all objects (body, head, projectile) the correct size and then apply all scales with CTRL+A.

It is always a good idea to have a scale of (1,1,1) unless there is a good reason not to do it that way.

If you can’t manage it,

A) you can let the created object play a one-frame scale action. Be aware it will still be scaled for one frame.
B) add the object via Python and set the scale directly after creation
C) ensure the emitter is not scaled:
C1) via Python (you can use a different emitter object)
C2) by vertex parenting the emitter (but you loose the rotation)

spawn invisible, use a delay of 1 to turn visible,

delay:0-------python

import bge
cont=bge.logic.getCurrentScene()
own=cont.owner()
own.localScale=(1,1,1)

Thanks Kheetor, that fixed it!