mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
fixed item throw interface of ragdoll fixes #93
This commit is contained in:
parent
15e4b2825f
commit
5caa21f453
5 changed files with 19 additions and 24 deletions
|
|
@ -130,15 +130,19 @@ function (Parent, Box2D, Options, Settings, Exception, Nc) {
|
|||
};
|
||||
|
||||
Item.prototype.throw = function(options, carrierVelocity) {
|
||||
var body = this.body;
|
||||
this.accelerateBody(this.body, options, carrierVelocity);
|
||||
};
|
||||
|
||||
Item.prototype.accelerateBody = function(body, options, carrierVelocity) {
|
||||
|
||||
body.SetAwake(true);
|
||||
|
||||
var vector = new Box2D.Common.Math.b2Vec2(
|
||||
options.x * Settings.MAX_THROW_FORCE / this.options.weight + carrierVelocity.x,
|
||||
-options.y * Settings.MAX_THROW_FORCE / this.options.weight + carrierVelocity.y
|
||||
);
|
||||
this.body.SetLinearVelocity(vector);
|
||||
|
||||
body.SetLinearVelocity(vector);
|
||||
body.SetAngularVelocity(-options.av * Settings.MAX_THROW_ANGULAR_VELOCITY);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -334,21 +334,13 @@ function (Parent, Box2D, Settings, Nc) {
|
|||
this.limbs.head.SetAngle((this.options.grabAngle || 0) * direction);
|
||||
};
|
||||
|
||||
RagDoll.prototype.throw = function(x, y) {
|
||||
Parent.prototype.throw.call(this, x, y);
|
||||
|
||||
var limbDampingFactor = 1;
|
||||
RagDoll.prototype.throw = function(options, carrierVelocity) {
|
||||
Parent.prototype.throw.call(this, options, carrierVelocity);
|
||||
|
||||
for(var name in this.limbs) {
|
||||
var body = this.limbs[name];
|
||||
body.SetAwake(true);
|
||||
|
||||
var vector = new Box2D.Common.Math.b2Vec2(
|
||||
x * Settings.MAX_THROW_FORCE * limbDampingFactor / this.options.weight,
|
||||
-y * Settings.MAX_THROW_FORCE * limbDampingFactor / this.options.weight
|
||||
);
|
||||
body.SetLinearVelocity(vector);
|
||||
// body.SetAngularVelocity(Settings.MAX_THROW_ANGULAR_VELOCITY * x);
|
||||
this.accelerateBody(body, options, carrierVelocity);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -87,18 +87,13 @@ function (Parent, Box2D, Settings) {
|
|||
// FIXME: implement body flip if necessary
|
||||
};
|
||||
|
||||
Skateboard.prototype.throw = function(x, y) {
|
||||
Parent.prototype.throw.call(this, x, y);
|
||||
Skateboard.prototype.throw = function(options, carrierVelocity) {
|
||||
Parent.prototype.throw.call(this, options, carrierVelocity);
|
||||
|
||||
for (var i = 0; i < this.wheels.length; i++) {
|
||||
var body = this.wheels[i];
|
||||
body.SetAwake(true);
|
||||
|
||||
var vector = new Box2D.Common.Math.b2Vec2(
|
||||
x * Settings.MAX_THROW_FORCE / this.options.weight,
|
||||
-y * Settings.MAX_THROW_FORCE / this.options.weight
|
||||
);
|
||||
body.SetLinearVelocity(vector);
|
||||
this.accelerateBody(body, options, carrierVelocity);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ define([
|
|||
Level.prototype.createItem = function(uid, options) {
|
||||
|
||||
switch(options.type) {
|
||||
//case 'skateboard':
|
||||
// return new Skateboard(this.engine, uid, options);
|
||||
case 'skateboard':
|
||||
return new Skateboard(this.engine, uid, options);
|
||||
case 'ragdoll':
|
||||
return new RagDoll(this.engine, uid, options);
|
||||
case 'rube':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue