2017-06-07 2 views
0

Ich weiß, wie man jedem gegebenen Objekt/Element Schwerkraft hinzufügt. Fügen Sie einfach die Beschleunigung Y nach unten hinzu. Aber "was, wenn mein Held fliegen möchte?" oder "was ist, wenn ich die Schwerkraft für ein bestimmtes Objekt abschalten möchte? Ich muss gravity = 0 setzen, die für alle offensichtlich abschalten wird. Ich dachte auch, dass ich jeden geben würde prägen ihre eigenen ‚Schwere‘ Variable, aber ich dachte, dass wäre zu viel und es ist wahrscheinlich nicht, wie es ...Wie fügt man "automatisch" mehreren Instanzen Gravity hinzu?

getan Wie würde ich von der Erstellung Formen gehen

(mit EaseJS)

function spawnShape(x, y, w, h) { 
    var shape = new createjs.Shape(); 
    shape.graphics.beginFill("black").drawRect(x, y, w, h); 
    stage.addChild(shape); 
} 

spawnShape(20, 250, 600, 30); 
spawnShape(200, 150, 5, 5); 

stage.update(); 

die Gravitation "automatisch" hinzufügen (Eve Ich weiß, dass es 2D-Physik-Engines gibt, aber ich möchte das selbst verstehen und habe versucht, PhysicsJS zu verwenden, habe es aber versäumt .. Ich werde wahrscheinlich einen Motor verwenden, aber jetzt will ich zu wissen, wie dies zu tun: P

Antwort

0

können Sie ein Objekt erstellen:

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); 
    } 
} 

so können Sie es als nennen:

> 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 

ich habe nicht mit EaseJS so die Besonderheiten gearbeitet kann ungenau sein, aber die übergeordnete Logik wird wie gezeigt werden bove.

+0

Ok, also musste ich die easyjs auswerfen, da ich es nicht geschafft habe, eine Methode zu zeichnen, die es benutzt. Dies funktionierte 'this.draw = function() {ctx.fillRect (this.x, this.y, this.w, this.h)};' – RealAnyOne

0

Ich denke, dass Sie verstehen, wie man Schwerkraft hinzufügt oder einem Objekt keine Schwerkraft hinzufügt. Wie Sie sagen, ist es nur Beschleunigung Y zum Objekt hinzufügen.

Es hört sich so an, als müssten Sie nur ein wenig über Ihr Design nachdenken. Nehmen wir an, Sie haben ein Modul 'gravity.js', das dafür verantwortlich ist, die Schwerkraft auf ein Objekt anzuwenden.

/* 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); 
} 

Wenn Sie eine Form irgendwo schaffen und wollen sie frei von Schwerkraft sein, setzen Sie einfach die .gravityAcceleration Mitglied dieses Objekt. Übrigens, es gibt nichts besonderes an diesem "gravityAcceleration" -Namen - es könnte sein, was immer du willst.

//Assuming spawnShape returns an object. 
var superman = spawnShape(20, 250, 600, 30); 
superman.gravityAcceleration = 0; //Override the default gravity. 

Sie müssen nur die .gravityAcceleration Mitglied für Formobjekte setzen, die der Schwerkraft trotzen wird.

+0

Ja, mein Schlechter: |, Es war schlecht geschrieben, tatsächlich tue ich es nicht Ich weiß nicht, wie man mit Objekten arbeitet. (Ich bin sehr neu von: P), aber ich habe es ein wenig nachgeschaut und jetzt besser verstanden. – RealAnyOne

Verwandte Themen