- Home /
movement doesnt stop when jump pad is tapped at the same time
heres my code, the problem is it works perfectly fine, it moves forward and can rotate when the right pad is tapped. but when i move forward then tap the rotate pad twice, it jumps but it walks continuosly and cannot be stopped:
@script RequireComponent(CharacterController)
var moveTouchPad : Joystick; var rotateTouchPad : Joystick; var cameraPivot : Transform; //for rotation of camera
var forwardSpeed : float = 30; var backwardSpeed : float = 50; var sidestepSpeed : float = 50; var jumpSpeed: float = 8; var inAirMultiplier : float = 0.25; var rotationSpeed : Vector2 = Vector2(50, 25); var tiltPositiveYAxis = 0.6; var tiltNegativeYAxis = 0.4; var tiltXAxisMinimum = 0.1;
private var thisTransform : Transform; private var character : CharacterController; private var cameraVelocity : Vector3; private var velocity : Vector3; private var canJump = true;
var TextColor : Color = Color.black;
function Start () {
//this will define the component to speedup loading time
thisTransform = GetComponent(Transform);
character = GetComponent(CharacterController);
Screen.orientation = ScreenOrientation.LandscapeLeft;
guiText.material.color = TextColor;
//move the character to the spawn
var spawn = GameObject.Find("PlayerSpawn");
if(spawn)
thisTransform.position = spawn.transform.position;
}
function OnEndGame() { moveTouchPad.Disable();
if(rotateTouchPad)
{
rotateTouchPad.Disable();
}
this.enabled=false;
}
function Update () { var movement = thisTransform.TransformDirection(Vector3(moveTouchPad.position.x, 0, moveTouchPad.position.y)); movement.y = 0; movement.Normalize();
var absJoyPos = Vector2(Mathf.Abs(moveTouchPad.position.x), Mathf.Abs(moveTouchPad.position.y)); //position of the joystick
if(absJoyPos.y > absJoyPos.x)
{
if(moveTouchPad.position.y > 0)
{
movement *= forwardSpeed * absJoyPos.y;
//canJump = false;
}
else
{
movement *= backwardSpeed * absJoyPos.y;
}
}
else
{
movement *= sidestepSpeed * absJoyPos.x;
}
if(character.isGrounded)
{
var jump = false;
var touchPad : Joystick;
if(rotateTouchPad)
{
touchPad = rotateTouchPad;
}
else
{
touchPad = moveTouchPad;
}
if( !touchPad.IsFingerDown())
{
canJump = false;
}
if( touchPad.tapCount == 2)
{
velocity = character.velocity;
velocity.y += 16;
movement.x = 0;
movement.y = 0;
}
}
else
{
velocity.y += Physics.gravity.y * Time.deltaTime;
movement.x = inAirMultiplier;
movement.y = inAirMultiplier;
}
movement += velocity;
movement += Physics.gravity;
movement *= Time.deltaTime;
character.Move(movement);
if(character.isGrounded)
{
var camRotation = Vector2.zero;
if(rotateTouchPad)
{
camRotation = rotateTouchPad.position;
}
else
{
print(iPhoneInput.acceleration);
var acceleration = Input.acceleration;
var absTiltX = Mathf.Abs(acceleration.x);
if( acceleration.z < 0 && acceleration.x < 0 )
{
if( absTiltX >= tiltPositiveYAxis )
camRotation.y = (absTiltX - tiltPositiveYAxis) / (1 - tiltPositiveYAxis);
else if( absTiltX <= tiltNegativeYAxis )
camRotation.y = -( tiltNegativeYAxis - absTiltX ) / tiltNegativeYAxis;
}
if( Mathf.Abs( acceleration.y ) >= tiltXAxisMinimum )
camRotation.x = - (acceleration.y - tiltXAxisMinimum) / (1 - tiltXAxisMinimum);
}
camRotation.x *= rotationSpeed.x;
camRotation.y *= rotationSpeed.y;
camRotation *= Time.deltaTime;
thisTransform.Rotate(0, camRotation.x, 0, Space.World);
cameraPivot.Rotate( -camRotation.y, 0, 0);
}
}
Your answer
Follow this Question
Related Questions
Simple Character Movement 1 Answer
Help with Grid Movement 2 Answers
Trouble with correct move and rotation of Rigibody 0 Answers
Rotating Player 0 Answers
Character Controller won't move forward 0 Answers