- Home /
Question by
TaylorAnderson · Aug 10, 2012 at 12:19 AM ·
gravityswitchnotworking
Gravity switch not working
Bit of a bizarre issue I'm having.
I have this gravity switch that lowers my players gravity (I have custom, simple gravity set up). The switch was one of the first things I implemented in the level, and it worked right off the bat, but I've since gone on to make the rest of the level, and now I've come back to the first gravity switch and for some reason it's not working. No idea why.
Code for the gravity switch:
using UnityEngine;
using System.Collections;
public class GravitySwitchScript : MonoBehaviour
{
public bool isSwitched=false;
public float timeDelay=5f;
public Player player;
public Material originalMaterial;
public DestroyEverythingScript destroyer;
void OnTriggerEnter ()
{
if (timeDelay>0)
{
isSwitched=true;
}
}
void Update ()
{
if (isSwitched==true)
{
renderer.material.color=Color.green;
player.gravity-=20;
timeDelay-=Time.deltaTime;
}
if (timeDelay<0)
isSwitched=false;
if (isSwitched==false)
{
player.gravity=50;
renderer.material.color=originalMaterial.color;
timeDelay=5f;
}
if (destroyer.isDestroying)
Destroy (this);
}
}
And the jump function that gravity affects:
//controls the character's jumping. takes the character controller as a parameter.
void JumpFunc (CharacterController controller)
{
//this resets the doubleJump counter and the yMovement if the player is on the ground
if(controller.isGrounded)
{
yMovement=0;
doubleJump=0;
//this jumps once if the player presses space, regardless of double jump counter.
if(Input.GetKeyDown(KeyCode.W))
{
yMovement = jumpSpeed;
doubleJump=1;
}
}
//this is the double jump--as long as there hasnt already been two jumps, you can jump again using spacebar.
else if (Input.GetKeyDown (KeyCode.W) && doubleJump<2)
{
doubleJump=2;
yMovement = jumpSpeed;
}
//this applies gravity to the yMovement variable
yMovement -= gravity * Time.deltaTime;
//this makes the yMovement variable affect the moveDirection vector
moveDirection.y=yMovement;
//this applies the moveDirection vector to the character controller so the player moves appropriately.
controller.Move(moveDirection * Time.deltaTime);
}
Any help would be appreciated.
Comment
Your answer
Follow this Question
Related Questions
issues with collision detection 1 Answer
Trigger fires, but the code doesn't execute. 0 Answers
FindGameObjectsWithTag not working 1 Answer
My animation is not importing into Unity. 0 Answers
Script not working 0 Answers