- Home /
I can't seem to get my character to jump in my mobile app
I got two gui buttons on the left side of the screen for going forward and backward. And an action button on the right side of the screen.
I've set up the Directional Buttons to send -1 and 1 for Horizontal Axis to the player's FPSInputController.
However, I cannot get the player to jump if the action button is swiped upwards (I've set the action button to jump when swiped up and slide when swiped downward). What am I doing wrong?
private var fp : Vector2; // first finger position
private var lp : Vector2; // last finger position
private var actionSwipe : boolean;
private var jump : boolean;
var ass : GameObject; //player fits in this parameter
var touchZone : Rect;
var BounceAmount : float = 14;
var Dive : float = 20;
function Start (){
actionSwipe = false;
jump = false;
}
function Update () {
for (var touch : Touch in Input.touches){
if (touch.phase == TouchPhase.Began){
fp = touch.position;
lp = touch.position;
}
if (touch.phase == TouchPhase.Moved ){
lp = touch.position;
}
if(guiTexture.HitTest (touch.position)){
if(guiTexture.name == "DpadLeft"){
ass.GetComponent(FPSInputController).horizontalAxis = -1;
Debug.Log ("HitTest: The Touch is down on " + this.name);
}else if(guiTexture.name == "DpadRight"){
ass.GetComponent(FPSInputController).horizontalAxis = 1;
Debug.Log ("HitTest: The Touch is down on " + this.name);
}else if(guiTexture.name == "DpadAction"){
actionSwipe = true;
ass.GetComponent(CharacterMotor).movement.velocity.y = BounceAmount;
Debug.Log ("HitTest: The Touch is down on " + this.name);
}
}
// if ( touchZone.Contains( touch.position ) ){
// ass.GetComponent(FPSInputController).dpadHorizontalAxis = -1;
// Debug.Log ("TouchZone: The Touch is down on " + this.name); }
if(touch.phase == TouchPhase.Ended){
Debug.Log ("The Touch has ended");
ass.GetComponent(FPSInputController).horizontalAxis = 0;
if(actionSwipe){
actionSwipe = false;
if((fp.y - lp.y) < 0 ){ // up swipe
Debug.Log ("Jump");
ass.GetComponent(CharacterMotor).movement.velocity.y = BounceAmount;
}else {
Debug.Log ("Dive");
ass.GetComponent(CharacterMotor).movement.velocity.y = -Dive;
}
}
}
}
}
Answer by johnq1216 · Feb 11, 2014 at 06:16 PM
Nevermind, I figured it out. It only works if the character is airborne because of how the motor is structured. I use that upshot in y velocity for a Spring Object and as a dive attack. Since both naturally require the character to be airborne, I didn't think too much of it.
Your answer
Follow this Question
Related Questions
touch anywhere on screen to jump 2 Answers
Mobile - Jumping while moving - Standard Assets 0 Answers
Hit Detection On Android 1 Answer
What will happened to other key "E" build for mobile 1 Answer