Browse Source

Merge pull request #3 from standtall007/master

Updated AvatarController.js & RoboMan.js in order to make RoboMan animat...
JoshEngebretson 10 years ago
parent
commit
b2e382676f

+ 140 - 108
RobomanPlatformer/Resources/Components/AvatarController.js

@@ -40,15 +40,17 @@ var button1 = false;
 var lastButton0 = false;
 var lastButton1 = false;
 
-var timer = 0.75;
+var timer = 0.79;
 var fallTimer = 1.5;
 
 self.idle = true;
+self.walk = false;
+self.run = false;
 self.jump = false;
-self.isFalling = false;
+//self.isFalling = false;
+
+function start() {
 
-function start()
-{
     // Create rigidbody, and set non-zero mass so that the body becomes dynamic
     var body = node.createComponent("RigidBody");
     body.mass = 36.0;
@@ -63,10 +65,11 @@ function start()
     // Set a capsule shape for collision
     var shape = node.createComponent("CollisionShape");
     shape.setCapsule(4, 8, [0, 4, 0]);
+    
 }
 
-function fixedUpdate(timeStep)
-{
+function fixedUpdate(timeStep) {
+
     var body = node.getComponent("RigidBody");
 
     // Update the in air timer. Reset if grounded
@@ -92,22 +95,17 @@ function fixedUpdate(timeStep)
     // Velocity on the XZ plane
     var planeVelocity = [velocity[0], 4.0, velocity[2]];
 
-    if (cameraMode != 2)
-    {
-        if (moveForward)
-        {
+    if (cameraMode != 2) {
+        if (moveForward) {
             vec3.add(moveDir, moveDir, [0, 0, 1])
         }
-        if (moveBackwards)
-        {
+        if (moveBackwards) {
             vec3.add(moveDir, moveDir, [0, 0, 1])
         }
-        if (moveLeft)
-        {
+        if (moveLeft) {
             vec3.add(moveDir, moveDir, [0, 0, 1])
         }
-        if (moveRight)
-        {
+        if (moveRight) {
             vec3.add(moveDir, moveDir, [0, 0, 1])
         }
     }
@@ -119,47 +117,42 @@ function fixedUpdate(timeStep)
     vec3.scale(moveDir, moveDir, (softGrounded ? MOVE_FORCE : INAIR_MOVE_FORCE));
     body.applyImpulse(moveDir);
 
-    if (softGrounded)
-    {
+    if (softGrounded) {
         // When on ground, apply a braking force to limit maximum ground velocity
         vec3.negate(planeVelocity, planeVelocity);
         vec3.scale(planeVelocity, planeVelocity, BRAKE_FORCE);
         body.applyImpulse(planeVelocity);
 
         // Jump. Must release jump control inbetween jumps
-        if (button0)
-        {
-            if (okToJump)
-            {
+        if (button0) {
+            if (okToJump) {
                 var jumpforce = [0, 108, 0];
                 vec3.scale(jumpforce, jumpforce, JUMP_FORCE);
                 body.applyImpulse(jumpforce);
                 okToJump = false;
-                //isGrounded = false;
+                isGrounded = false;
             }
         }
     }
-    
+
     if (softGrounded && vec3.length(moveDir) > 0.0)
         self.idle = false;
     else
         self.idle = true;
 
-    if (okToJump)
-    {
-        self.jump = false;
-    }
-    else
-    {
+    if (!okToJump){
         self.jump = true;
+    } else {
+        self.jump = false;
     }
 
     // Reset grounded flag for next frame
     //onGround = true;
+    
 }
 
-function MoveCamera(timeStep)
-{
+function MoveCamera(timeStep) {
+
     // Movement speed as world units per second
     var MOVE_SPEED = 10.0;
     // Mouse sensitivity as degrees per pixel
@@ -180,17 +173,18 @@ function MoveCamera(timeStep)
     var speed = MOVE_SPEED * timeStep;
 
     if (moveForward)
-        cameraNode.translate([0.0, 0.0, speed])
+        cameraNode.translate([0.0, 0.0, speed]);
     if (moveBackwards)
-        cameraNode.translate([0.0, 0.0, -speed])
+        cameraNode.translate([0.0, 0.0, -speed]);
     if (moveLeft)
-        cameraNode.translate([-speed, 0.0, 0.0])
+        cameraNode.translate([-speed, 0.0, 0.0]);
     if (moveRight)
-        cameraNode.translate([speed, 0.0, 0.0])
+        cameraNode.translate([speed, 0.0, 0.0]);
+        
 }
 
-function UpdateControls()
-{
+function UpdateControls() {
+
     var input = game.input;
 
     moveForward = false;
@@ -207,80 +201,123 @@ function UpdateControls()
     // Mouse sensitivity as degrees per pixel
     var MOUSE_SENSITIVITY = 0.1;
 
-    if (input.getKeyDown(Atomic.KEY_W))
-    {
+    // We set the default movement keys here
+    if (input.getKeyDown(Atomic.KEY_W) || input.getKeyDown(Atomic.KEY_UP)) {
+        yaw = 0;
         moveForward = true;
     }
-    if (input.getKeyDown(Atomic.KEY_S))
-    {
+    if (input.getKeyDown(Atomic.KEY_S) || input.getKeyDown(Atomic.KEY_DOWN)) {
+        yaw = 180;
         moveBackwards = true;
     }
-    if (input.getKeyDown(Atomic.KEY_A))
-    {
+    if (input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_LEFT)) {
+        yaw = -90;
         moveLeft = true;
     }
-    if (input.getKeyDown(Atomic.KEY_D))
-    {
+    if (input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_RIGHT)) {
+        yaw = 90;
         moveRight = true;
     }
-    if (input.getKeyPress(Atomic.KEY_F))
-    {
+    
+    // This is the key for changing camera modes
+    if (input.getKeyPress(Atomic.KEY_F)) {
         button1 = true;
     }
-    if (input.getKeyDown(Atomic.KEY_SPACE))
-    {
-        button0 = true;            
-    }
-    if (input.getKeyDown(Atomic.KEY_LSHIFT))
-    {
-        MOVE_FORCE = 129.6;
-    }
-    else
-    {
-        MOVE_FORCE = 64.8;
-    }
-
-    if (input.getKeyDown(Atomic.KEY_W))
-    {
-        yaw = 0;
-    }        
-    if (input.getKeyDown(Atomic.KEY_S))
-    {
-        
-        yaw = -180;
-    }
-    if (input.getKeyDown(Atomic.KEY_A))
-    {
-        yaw = -90;
-    }        
-    if (input.getKeyDown(Atomic.KEY_D))
-    {
-        yaw = 90;
+    // This is the key for jumping
+    if (input.getKeyDown(Atomic.KEY_SPACE)) {
+        button0 = true;
     }
 
-    if (input.getKeyDown(Atomic.KEY_W) && input.getKeyDown(Atomic.KEY_A))
-    {
+    // Here we set the angled directions
+    if (input.getKeyDown(Atomic.KEY_W) && input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_UP) && input.getKeyDown(Atomic.KEY_LEFT)) {
         yaw = -45;
     }
-    if (input.getKeyDown(Atomic.KEY_W) && input.getKeyDown(Atomic.KEY_D))
-    {
+    if (input.getKeyDown(Atomic.KEY_W) && input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_UP) && input.getKeyDown(Atomic.KEY_RIGHT)) {
         yaw = 45;
     }
-    if (input.getKeyDown(Atomic.KEY_S) && input.getKeyDown(Atomic.KEY_A))
-    {
+    if (input.getKeyDown(Atomic.KEY_S) && input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_DOWN) && input.getKeyDown(Atomic.KEY_LEFT)) {
         yaw = -135;
     }
-    if (input.getKeyDown(Atomic.KEY_S) && input.getKeyDown(Atomic.KEY_D))
-    {
+    if (input.getKeyDown(Atomic.KEY_S) && input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_DOWN) && input.getKeyDown(Atomic.KEY_RIGHT)) {
         yaw = 135;
     }
-    
+
+    // Here we define if a default move key is pressed, it should animate RoboMan
+    if (input.getKeyDown(Atomic.KEY_W) || input.getKeyDown(Atomic.KEY_S) || input.getKeyDown(Atomic.KEY_A) || input.getKeyDown(Atomic.KEY_D) || input.getKeyDown(Atomic.KEY_UP) || input.getKeyDown(Atomic.KEY_DOWN) || input.getKeyDown(Atomic.KEY_LEFT) || input.getKeyDown(Atomic.KEY_RIGHT)) {
+        // If RoboMan is NOT jumping we want to play walk animation
+        if (!self.jump)
+        {
+            self.walk = true;
+            self.run = false;
+            
+            // If we're not holding the run button down, we want the move force to be normal and walk animation to play
+            if (!input.getKeyDown(Atomic.KEY_LSHIFT))
+            {
+                MOVE_FORCE = 64.8;
+                self.walk = true;
+                self.run = false;
+            }
+            // Else if we ARE holding the run button down WHILE pressing a move key, then we want RoboMan to play the run animation
+            else
+            {
+                MOVE_FORCE = 129.6;
+                self.walk = false;
+                self.run = true;
+            }
+        }
+        // Else if we are jumping, we don't want to play either the run or walk animations
+        else
+        {
+            self.walk = false;
+            self.run = false;
+            
+            if (!input.getKeyDown(Atomic.KEY_LSHIFT))
+            {
+                MOVE_FORCE = 64.8;
+                self.walk = false;
+                self.run = false;
+            }
+            else
+            {
+                MOVE_FORCE = 129.6;
+                self.walk = false;
+                self.run = false;
+            }
+        }
+    }
+    // If we're not pressing a move key we normally want to play the idle animation on RoboMan
+    else
+    {
+        if (!self.jump)
+        {
+            self.idle = true;
+            self.walk = false;
+            self.run = false;
+            
+            if (input.getKeyDown(Atomic.KEY_LSHIFT))
+            {
+                self.idle = true;
+            }
+        }
+        // Here we want to play the jump animation even though we're only moving in the Y axis!
+        else
+        {
+            self.idle = false;
+            
+            if (input.getKeyDown(Atomic.KEY_LSHIFT))
+            {
+                self.idle = false;
+            }
+        } 
+    }
+
     //mouseMoveX = input.getMouseMoveX();
     //mouseMoveY = input.getMouseMoveY();
+    
 }
 
-function update(timeStep)
-{
+function update(timeStep) {
+
     UpdateControls();
 
     /*if (cameraMode != 2) {
@@ -288,19 +325,16 @@ function update(timeStep)
         pitch += mouseMoveY * YAW_SENSITIVITY;
     }*/
 
-    if (!okToJump)
-    {
-        timer -= 0.0048;
+    if (!okToJump) {
+        timer -= timeStep;//0.0048;
     }
-        
-    if (timer <= 0)
-    {
+
+    if (timer <= 0) {
         okToJump = true;
+        isGrounded = true;
         onGround = true;
-        timer = 0.75;
-    }
-    else if (timer < 0.65 && timer > 0.1)
-    {
+        timer = 0.79;
+    } else if (timer < 0.69 && timer > 0.1) {
         okToJump = false;
     }
 
@@ -309,17 +343,16 @@ function update(timeStep)
     if (pitch > 80)
         pitch = 80;*/
 
-
-    if (button1)
-    {
+    if (button1) {
         cameraMode++;
         if (cameraMode == 3)
             cameraMode = 0;
     }
+    
 }
 
-function postUpdate(timestep)
-{
+function postUpdate(timestep) {
+
     // Get camera lookat dir from character yaw + pitch
     var rot = node.getRotation();
 
@@ -330,8 +363,7 @@ function postUpdate(timestep)
 
     var headNode = node.getChild("Head_Tip", true);
 
-    if (cameraMode == 1)
-    {
+    if (cameraMode == 1) {
         var headPos = headNode.getWorldPosition();
         var offset = [0.0, 0.15, 0.2];
         vec3.add(headPos, headPos, vec3.transformQuat(offset, offset, [rot[1], rot[2], rot[3], rot[0]]));
@@ -340,8 +372,7 @@ function postUpdate(timestep)
         quat.setAxisAngle(dir, [0, 1, 0], (yaw * Math.PI / 180.0));
         node.setRotation([dir[3], dir[0], dir[1], dir[2]]);
     }
-    if (cameraMode == 0)
-    {
+    if (cameraMode == 0) {
         var aimPoint = node.getPosition();
         var aimOffset = [0, 5, -15];
         //var rotPoint = cameraNode.getRotation();
@@ -362,5 +393,6 @@ function postUpdate(timestep)
         node.setRotation([dir[3], dir[0], dir[1], dir[2]]);
     }
     //else
-        //MoveCamera(timestep);
+    //MoveCamera(timestep);
+    
 }

+ 60 - 7
RobomanPlatformer/Resources/Components/RoboMan.js

@@ -1,4 +1,3 @@
-
 var game = Atomic.game;
 var node = self.node;
 
@@ -8,6 +7,9 @@ var controller = node.createJSComponent("AvatarController");
 var animCtrl = node.createComponent("AnimationController");
 
 var idle = true;
+var walk = false;
+var run = false;
+var jump = false;
 
 function start() {
 
@@ -18,11 +20,10 @@ function start() {
     model.setMaterial(cache.getResource("Material", "Materials/Robot_01_Diffuse.xml"));
 
     model.castShadows = true;
-    
+
     animCtrl.playExclusive("Models/RoboMan_Normal_Idle.ani", 0, true, 0.0);
 
     game.cameraNode.position = [0, 5.5, -10];
-    game.cameraNode.pitch(20);
     
 }
 
@@ -30,17 +31,69 @@ function start() {
 function update(timeStep) {
 
     if (idle != controller.idle) {
-    
+
         idle = controller.idle;
-        
+
         if (idle)
             animCtrl.playExclusive("Models/RoboMan_Normal_Idle.ani", 0, true, 0.1);
-        else
+        else if (!idle && walk)
+        {
+            animCtrl.playExclusive("Models/RoboMan_Normal_Walk.ani", 0, true, 0.1);
+        }
+        else if (!idle && run)
+        {
             animCtrl.playExclusive("Models/RoboMan_Normal_Run.ani", 0, true, 0.1);
+        }
+        else if (!idle && jump)
+        {
+            animCtrl.playExclusive("Models/RoboMan_Normal_JumpFall.ani", 0, true, 0.02);
+        }
+    }
+
+    if (walk != controller.walk) {
+
+        walk = controller.walk;
+        jump = controller.jump;
         
-    
+        if (walk)
+            animCtrl.playExclusive("Models/RoboMan_Normal_Walk.ani", 0, true, 0.1);
+        else if (!walk && jump)
+        {
+            animCtrl.playExclusive("Models/RoboMan_Normal_JumpFall.ani", 0, true, 0.02);
+        }
     }
 
+    if (run != controller.run) {
+
+        run = controller.run;
+        jump = controller.jump;
+        walk = controller.walk;
+        
+        if (run)
+            animCtrl.playExclusive("Models/RoboMan_Normal_Run.ani", 0, true, 0.1);
+        else if (!run && walk)
+        {
+            animCtrl.playExclusive("Models/RoboMan_Normal_Walk.ani", 0, true, 0.1);
+        }
+        else if (!run && jump)
+        {
+            animCtrl.playExclusive("Models/RoboMan_Normal_JumpFall.ani", 0, true, 0.02);
+        }
+    }
+
+    // Plays the jump animation (atm it is just the run animation)
+    if (jump != controller.jump) {
     
+        jump = controller.jump;
 
+        if (jump) {
+            animCtrl.playExclusive("Models/RoboMan_Normal_JumpFall.ani", 0, true, 0.02);
+        } else if (!jump && run) {
+            animCtrl.playExclusive("Models/RoboMan_Normal_Run.ani", 0, true, 0.1);
+            } else if (!jump && walk){
+            animCtrl.playExclusive("Models/RoboMan_Normal_Walk.ani", 0, true, 0.1);
+            } else {
+            animCtrl.playExclusive("Models/RoboMan_Normal_Idle.ani", 0, true, 0.1);
+        }
+    }
 }

+ 4 - 5
RobomanPlatformer/Resources/Components/Scene.js

@@ -20,9 +20,9 @@ function start() {
     var zone = zoneNode.createComponent("Zone");
     zone.boundingBox = [-1000, -1000, -1000, 1000, 1000, 1000];
     zone.ambientColor = [0.15, 0.15, 0.15];
-    zone.fogColor = [0.5, 0.5, 0.7, 1.0];
-    zone.fogStart = 10;
-    zone.fogEnd = 100;
+    zone.fogColor = [0.6, 0.6, 0.85, 1.0];
+    //zone.fogStart = 10;
+    //zone.fogEnd = 100;
 
     var lightNode = scene.createChild("Directional Light");
     lightNode.direction = [0.6, -1.0, 0.8];
@@ -33,14 +33,13 @@ function start() {
 
     // If we're running on android tweak the shadows
     if (Atomic.platform == "Android") {
-
         light.setShadowCascade(20.0, 50.0, 200.0, 0.0, 0.9);
         light.shadowIntensity = 0.33;
     } else {
         light.setShadowCascade(10.0, 50.0, 200.0, 0.0, 0.8);
     }
 
-    light.setShadowBias(0.00025, 0.5);
+    light.setShadowBias(0.0003, 0.5);
     light.specularIntensity = 8;
 
     // add the roboman

+ 41 - 0
RobomanPlatformer/Roboman Platformer.atomic

@@ -0,0 +1,41 @@
+{
+    "version": 1,
+    "build_settings": {
+        "version": 1,
+        "android": {
+            "app_name": "RoboManPlatformer2",
+            "package": "com.DavidMortensen.RoboManPlatformer2",
+            "target_sdk_version": "android-19",
+            "min_sdk_version": "",
+            "activity_name": "",
+            "company_name": "David Mortensen",
+            "product_name": "RoboMan Platformer 2"
+        },
+        "ios": {
+            "app_name": "",
+            "package": "",
+            "provision_file": "",
+            "company_name": "",
+            "product_name": "",
+            "appid_prefix": ""
+        },
+        "mac": {
+            "app_name": "",
+            "package": "",
+            "company_name": "",
+            "product_name": ""
+        },
+        "windows": {
+            "app_name": "",
+            "package": "",
+            "company_name": "",
+            "product_name": ""
+        },
+        "webgl": {
+            "app_name": "",
+            "package": "",
+            "company_name": "",
+            "product_name": ""
+        }
+    }
+}