我知道如何将重力添加到任何给定的对象/元素。只需向下添加加速度Y.但是“如果我想让我的英雄飞行会怎样?”或“如果我想为一个特定物体关闭重力怎么办?我必须设置{{1}这显然会为每个人关闭。我也认为给每个形状都有他们自己的“引力”变量,但我认为那太多了,而且可能不是它的完成方式......
我如何创建形状
(使用EaseJS)
gravity = 0
自动添加重力? (每个形状继承向下加速)我知道有2D物理引擎,但我想自己做/了解,我确实尝试使用PhysicsJS但没有这样做..我可能会使用引擎但是现在我想知道怎么做:P
答案 0 :(得分:0)
您可以创建一个对象:
function Shape(x, y, w, h, gravity){
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.gravity = gravity;
this.shape = new createjs.Shape();
stage.addChild(shape);
this.draw = function(){
shape.graphics.beginFill("black").drawRect(x, y, w, h);
}
}
因此,您可以将其命名为:
> x = new Shape(200, 200, 10, 10, 0.5)
Shape {x: 200, y: 200, w: 10, h: 10, gravity: 0.5}
> y = new Shape(400, 100, 50, 100, 0.75)
Shape {x: 400, y: 100, w: 50, h: 100, gravity: 0.75}
> x.gravity = 0
0
> y.gravity
0.75
我还没有与EaseJS
合作,所以细节可能不准确,但总体逻辑如上所示。
答案 1 :(得分:0)
我想您了解如何添加重力或不向对象添加重力。正如你所说,它只是将加速度Y添加到对象中。
听起来你只需要稍微考虑一下你的设计。假设你有一个模块'gravity.js'负责将重力应用于对象。
/* gravity.js */
const DEFAULT_GRAVITY_ACCELERATION = 1.0;
function applyGravity(shape) {
const gravity = shape.gravityAcceleration !== undefined ?
shape.gravityAcceleration : DEFAULT_GRAVITY_ACCELERATION;
//Do whatever you normally do to update Y acceleration. Code below
//is just an example.
shape.addYAcceleration(gravity);
}
如果您在某个地方创建一个形状并希望它没有重力,只需设置该对象的.gravityAcceleration成员即可。顺便说一下,“gravityAcceleration”这个名字没什么特别的 - 它可以是你想要的任何东西。
//Assuming spawnShape returns an object.
var superman = spawnShape(20, 250, 600, 30);
superman.gravityAcceleration = 0; //Override the default gravity.
您只需为不受重力影响的形状对象设置.gravityAcceleration成员。