Poll:
You do not have permission to vote in this poll.
Total 0 vote(s) 0%
* You voted for this item. [Show Results]

Glitch with velocity
#5
Use gameConfusedcheduleTask():
[lua]
gameConfusedcheduleTask(function()
newBullet = Bullet:clone()
newBullet.Position = gunPosition
newBullet.Rotation = gunAngle - 180
newBullet.FixedVelocity.Velocity = Vec2D(-100,0) --error here
newBullet.Parent = game.World
end)
[/lua]

(long, probably confusing explanation below)

The problem is that scripts run separately from everything else. The game engine can only do one thing at a time (it can't add stuff while simulating physics, for example) so when you run a script that does something like cloning, adding, or removing stuff, it's actually telling the game to do it as soon as it's not busy. But the script won't wait for the game to be done, so 3 lines later the bullet's children won't have been added yet when the script asks for the one called FixedVelocity. Using gameConfusedcheduleTask() just tells the game engine to run the block of code in between drawing stuff or whatever else it's doing, and since only one thing is happening at the same time it can do any cloning, adding, or removing exactly when it's supposed to.

It would be better to just make all scripts use gameConfusedcheduleTask() without you having to type it yourself, but that would require removing sleep() and infinite loops and a lot of people were against that last time I tried.
Reply


Messages In This Thread
Glitch with velocity - by Duck - 12-16-2012, 02:19 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)