- Home /
How to instantiate on collision a Jump event with Standard FPS controller?
Hey guys,
Im new here and ive been stumped with this problem for hours.
I have a Standard Assets FPS Character Controller (unmodified), and I have a simple box collider on the floor set up as a trigger.
What I am trying to do is make it so that when the player walks over the box collider and activates the trigger I want to increase the CharacterMotor Scripts "baseHeight" value, and then following that instantiate a "JUMP" event.
What this is simulating is a type of Booster Pad. Below I have attached my script that is attached to the Booster Pad. It works as far as when it is triggered it changes the baseHeight variable in the CharacterMotor script, but for the life of me I cannot get it to set the "inputJump" boolean variable from the CharacterMotor script to true.
From my time messing with the CharacterMotor script, it seems that this "inputJump" boolean flag is what instantiates a Jump event.
I am not experienced enough to write my own fps style controller or I would have just done that, So any help you guys can give would be hugely appreciated.
Sorry about the block of text :(
#pragma strict
var motor : CharacterMotor ;
function Start (){
motor = GameObject.FindGameObjectWithTag ("Player").GetComponent(CharacterMotor);
}
function OnTriggerEnter (other : Collider) {
if (other.gameObject.tag == "Player"){
Debug.Log("PLAYER TRIGGERED = TRUE");
motor.jumping.baseHeight = 10;
motor.inputJump = true;
Debug.Log("Boolen: inputJump = "+ motor.inputJump);
}
}
Answer by gameplay4all · Oct 10, 2014 at 12:22 PM
Hi,
I found your question pretty interesting, so I tried some things out:
The reason that you can't change the motor.inputJump
variable is that the fpsInputController
is overwriting it every frame.
I made some adjustments to the fpsinputscript, you should make a variable IsOnPlatform
and set it to true when you're on a jump platform.
then replace this in the fpsInputController:
motor.inputJump = Input.GetButton("Jump");
with this:
if( !IsOnPlatform){
motor.inputJump = Input.GetButton("Jump");
}
else{
motor.inputJump = motor.grounded;
}
this makes the script call a jump whenever you land.
I didn't test this out, so I hope it works :)
-Son of Nature Dev
Your answer
Follow this Question
Related Questions
Default Character Motor randomly jumping? 1 Answer
Character Controller / Charactor Motor has no inputs? 1 Answer
Am I headed in the right direction? 0 Answers
Change gravity point on trigger 0 Answers
how to flip a sprite 0 Answers