Browse Source

Updates to Coin.js

Josh Engebretson 10 years ago
parent
commit
917412c3b2
1 changed files with 59 additions and 36 deletions
  1. 59 36
      PhysicsPlatformerNew/Resources/Components/Coin.js

+ 59 - 36
PhysicsPlatformerNew/Resources/Components/Coin.js

@@ -1,67 +1,90 @@
 "atomic component";
 
+var inspectorFields = {
+
+  // resource ref
+  pickupSound: ["Sound", "Sounds/Pickup_Coin8.ogg"],
+  bounceSound: ["Sound"]
+
+}
+
 var glmatrix = require("gl-matrix");
 var vec2 = glmatrix.vec2;
 
-var component = function (self) {
+var component = function(self) {
 
-var node = self.node;
-var camera = self.node.scene.getMainCamera();
-var cameraNode = camera.node;
+  var node = self.node;
+  var camera = self.node.scene.getMainCamera();
+  var cameraNode = camera.node;
 
-// Resources
+  // Resources
 
-var sprite = node.getComponent("AnimatedSprite2D")
-sprite.setAnimation("idle");
+  var sprite = node.getComponent("AnimatedSprite2D")
+  sprite.setAnimation("idle");
 
+  var soundSource = node.getComponent("SoundSource");
 
-//sprite.setLayer(100);
+  var activated = false;
+  var body;
 
-var activated = false;
-var body;
+  self.start = function() {
 
-function onPlayerHit() {
+  }
 
-    node.scale2D = [0, 0];
-    sprite.enabled = false;
-    body.enabled = false;
+  self.update = function(timeStep) {
 
-}
+    if (activated)
+      return false;
 
+    if (vec2.distance(cameraNode.position2D, node.position2D) < 3.0) {
 
-self.start = function() {
+      activated = true;
 
-}
+      body = node.createComponent("RigidBody2D");
+      body.setBodyType(Atomic.BT_DYNAMIC);
+      body.fixedRotation = true;
+      body.castShadows = false;
 
-self.update =  function(timeStep) {
+      self.subscribeToEvent("PhysicsBeginContact2D", function(ev) {
 
-    if (activated)
-        return false;
+        if (ev.nodeB == node) {
 
-    if (vec2.distance(cameraNode.position2D, node.position2D) < 3.0) {
+          if (ev.nodeA && ev.nodeA.name == "Player") {
+
+            node.scale2D = [0, 0];
+            sprite.enabled = false;
+            body.enabled = false;
+            if (self.pickupSound) {
+              soundSource.gain = 1.0;
+              soundSource.play(self.pickupSound);
+            }
 
-        activated = true;
+          } else if (self.bounceSound) {
 
-        body = node.createComponent("RigidBody2D");
-        body.setBodyType(Atomic.BT_DYNAMIC);
-        body.fixedRotation = true;
-        body.castShadows = false;
+            var vel = body.linearVelocity;
+            if (vec2.length(vel) > 3) {
+              soundSource.gain = .3;
+              soundSource.play(self.bounceSound);
+            }
+          }
+        }
+      });
 
-        var circle = node.createComponent("CollisionCircle2D");
+      var circle = node.createComponent("CollisionCircle2D");
 
-        // Set radius
-        circle.setRadius(.3);
-        // Set density
-        circle.setDensity(1.0);
-        // Set friction.
-        circle.friction = .2;
-        // Set restitution
-        circle.setRestitution(.8);
+      // Set radius
+      circle.setRadius(.3);
+      // Set density
+      circle.setDensity(1.0);
+      // Set friction.
+      circle.friction = .2;
+      // Set restitution
+      circle.setRestitution(.8);
 
 
     }
 
-}
+  }
 
 }