Browse Source

Looped music. Added keyboard control.

rsredsq 10 years ago
parent
commit
120fd26e17

+ 3 - 0
Breakout/Resources/Components/Background.js

@@ -8,6 +8,9 @@ function random(min, max) {
 //A Background component
 //A Background component
 exports.component = function(self) {
 exports.component = function(self) {
     self.start = function() {
     self.start = function() {
+        //looping main game song
+        var music = Atomic.cache.getResource("Sound", "Sounds/crazy-space.ogg");
+        music.looped = true;
         //get default zone
         //get default zone
         var zone = Atomic.renderer.getDefaultZone();
         var zone = Atomic.renderer.getDefaultZone();
         //fog color with ortho camera is a clear clear
         //fog color with ortho camera is a clear clear

+ 1 - 3
Breakout/Resources/Components/Ball.js

@@ -24,7 +24,7 @@ exports.component = function(self) {
                 //play brick destroy sound
                 //play brick destroy sound
                 playBrickDestroySound();
                 playBrickDestroySound();
                 //remove brick
                 //remove brick
-                other.remove();
+                Atomic.destroy(other);
             }
             }
         });
         });
     }
     }
@@ -52,7 +52,5 @@ exports.component = function(self) {
             self.remove();
             self.remove();
             self.sendEvent("CreateNewBall");
             self.sendEvent("CreateNewBall");
         }
         }
-
-        console.log(self.rigidBody.linearVelocity);
     }
     }
 }
 }

+ 34 - 7
Breakout/Resources/Components/Paddle.js

@@ -1,10 +1,19 @@
 "atomic component";
 "atomic component";
 
 
+var inspectorFields = {
+    keyboard: false
+}
+
+var PADDLE_SPEED = 0.03;
+
 //A Paddle component
 //A Paddle component
 exports.component = function(self) {
 exports.component = function(self) {
     self.start = function() {
     self.start = function() {
         //define node name
         //define node name
         self.node.name = "Paddle";
         self.node.name = "Paddle";
+
+        self.rigidBody = self.getComponent("RigidBody2D");
+
         self.createStartBall();
         self.createStartBall();
 
 
         self.subscribeToEvent("CreateNewBall", function(_) {
         self.subscribeToEvent("CreateNewBall", function(_) {
@@ -25,7 +34,7 @@ exports.component = function(self) {
         //if we haven't ball started
         //if we haven't ball started
         if(!self.started) {
         if(!self.started) {
             //check mouse button click
             //check mouse button click
-            if(Atomic.input.getMouseButtonPress(Atomic.MOUSEB_LEFT)) {
+            if(Atomic.input.getMouseButtonPress(Atomic.MOUSEB_LEFT) || Atomic.input.getKeyDown(Atomic.KEY_SPACE)) {
                 //get rigidBody component of ours ball
                 //get rigidBody component of ours ball
                 var body = self.startBall.getComponent("RigidBody2D");
                 var body = self.startBall.getComponent("RigidBody2D");
                 //let's run our ball!
                 //let's run our ball!
@@ -36,11 +45,29 @@ exports.component = function(self) {
             //if we haven't started yet, move our ball with the paddle
             //if we haven't started yet, move our ball with the paddle
             self.startBall.position2D = [self.node.position2D[0], self.node.position2D[1]+64*Atomic.PIXEL_SIZE];
             self.startBall.position2D = [self.node.position2D[0], self.node.position2D[1]+64*Atomic.PIXEL_SIZE];
         }
         }
-        //get current mouse position, and project screen coordinates to the world coordinates
-        var pos = Atomic.renderer.getViewport(0).screenToWorldPoint(Atomic.input.getMousePosition()[0], 0, 0);
-        //set y value to -3
-        pos[1] = -Atomic.graphics.height/2.5*Atomic.PIXEL_SIZE;
-        //set paddle position to the calculated one
-        self.node.position2D = pos;
+        if (self.keyboard){
+            var pos = self.node.position2D;
+            if (Atomic.input.getKeyDown(Atomic.KEY_A) || Atomic.input.getKeyDown(Atomic.KEY_LEFT)) {
+                pos[0] -= PADDLE_SPEED;
+                self.node.position2D = pos;
+                // self.rigidBody.setLinearVelocity([-5, 0]);
+            } else if (Atomic.input.getKeyDown(Atomic.KEY_D) || Atomic.input.getKeyDown(Atomic.KEY_RIGHT)) {
+                pos[0] += PADDLE_SPEED;
+                self.node.position2D = pos;
+            }
+        } else {
+            //get current mouse position, and project screen coordinates to the world coordinates
+            var pos = Atomic.renderer.getViewport(0).screenToWorldPoint(Atomic.input.getMousePosition()[0], 0, 0);
+            //set y value to -3
+            pos[1] = -Atomic.graphics.height/2.5*Atomic.PIXEL_SIZE;
+            // set paddle position to the calculated one
+            self.node.position2D = pos;
+        }
+        if(self.node.position2D[0] < -Atomic.graphics.width / 2*Atomic.PIXEL_SIZE) {
+            self.node.position2D = [-Atomic.graphics.width / 2*Atomic.PIXEL_SIZE, -Atomic.graphics.height/2.5*Atomic.PIXEL_SIZE];
+        }
+        if(self.node.position2D[0] > Atomic.graphics.width / 2*Atomic.PIXEL_SIZE) {
+            self.node.position2D = [Atomic.graphics.width / 2*Atomic.PIXEL_SIZE, -Atomic.graphics.height/2.5*Atomic.PIXEL_SIZE];
+        }
     }
     }
 }
 }

+ 6 - 3
Breakout/Resources/Scenes/Scene.scene

@@ -5,8 +5,8 @@
 	<attribute name="Smoothing Constant" value="50" />
 	<attribute name="Smoothing Constant" value="50" />
 	<attribute name="Snap Threshold" value="5" />
 	<attribute name="Snap Threshold" value="5" />
 	<attribute name="Elapsed Time" value="0" />
 	<attribute name="Elapsed Time" value="0" />
-	<attribute name="Next Replicated Node ID" value="474" />
-	<attribute name="Next Replicated Component ID" value="4720" />
+	<attribute name="Next Replicated Node ID" value="476" />
+	<attribute name="Next Replicated Component ID" value="5089" />
 	<attribute name="Next Local Node ID" value="16778496" />
 	<attribute name="Next Local Node ID" value="16778496" />
 	<attribute name="Next Local Component ID" value="16777216" />
 	<attribute name="Next Local Component ID" value="16777216" />
 	<attribute name="Variables" />
 	<attribute name="Variables" />
@@ -57,6 +57,9 @@
 			<attribute name="Restitution" value="0.1" />
 			<attribute name="Restitution" value="0.1" />
 		</component>
 		</component>
 		<component type="JSComponent" id="1986">
 		<component type="JSComponent" id="1986">
+			<attribute name="FieldValues">
+				<variant hash="2138454023" type="Bool" value="false" />
+			</attribute>
 			<attribute name="ComponentFile" value="JSComponentFile;Components/Paddle.js" />
 			<attribute name="ComponentFile" value="JSComponentFile;Components/Paddle.js" />
 		</component>
 		</component>
 	</node>
 	</node>
@@ -848,7 +851,7 @@
 		<attribute name="Scale" value="1 1 1" />
 		<attribute name="Scale" value="1 1 1" />
 		<attribute name="Variables" />
 		<attribute name="Variables" />
 		<component type="SoundSource" id="4719">
 		<component type="SoundSource" id="4719">
-			<attribute name="Sound" value="Sound;Sounds/backgroundMusic.ogg" />
+			<attribute name="Sound" value="Sound;Sounds/crazy-space.ogg" />
 			<attribute name="Frequency" value="44100" />
 			<attribute name="Frequency" value="44100" />
 			<attribute name="Autoplay" value="true" />
 			<attribute name="Autoplay" value="true" />
 		</component>
 		</component>

+ 4 - 1
Breakout/Resources/Scripts/main.js

@@ -1,5 +1,8 @@
+//set texture filter mode to the nearest to see pure pixels
 Atomic.renderer.textureFilterMode = Atomic.FILTER_NEAREST;
 Atomic.renderer.textureFilterMode = Atomic.FILTER_NEAREST;
+//load a new main scene
 var scene = Atomic.player.loadScene("Scenes/Scene.scene");
 var scene = Atomic.player.loadScene("Scenes/Scene.scene");
+//get main camera from the loaded scene
 var camera = scene.getMainCamera();
 var camera = scene.getMainCamera();
-camera.setOrthographic(true);
+//calculate ortho size
 camera.setOrthoSize(Atomic.graphics.height * Atomic.PIXEL_SIZE);
 camera.setOrthoSize(Atomic.graphics.height * Atomic.PIXEL_SIZE);

BIN
Breakout/Resources/Sounds/backgroundMusic.ogg


+ 0 - 5
Breakout/Resources/Sounds/backgroundMusic.ogg.asset

@@ -1,5 +0,0 @@
-{
-	"version": 1,
-	"guid": "48df9783ac3b6c6837f8b48b84dd0aab",
-	"AudioImporter": {}
-}

BIN
Breakout/Resources/Sounds/crazy-space.ogg


+ 5 - 0
Breakout/Resources/Sounds/crazy-space.ogg.asset

@@ -0,0 +1,5 @@
+{
+	"version": 1,
+	"guid": "9dfd0271f588f624e1e105f93d4ddffa",
+	"AudioImporter": {}
+}