- Home /
Deactivate Swipe Controls on Pause?
When I pause my game, I wanna disable the in-game controls. How do I do this?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMotor : MonoBehaviour
{
private const float LANE_DISTANCE = 2.0f;
private const float TURN_SPEED = 0.05f;
//
private bool isRunning = false;
public static bool invincible = false;
public static bool shield = false;
// Animation
private Animator anim;
// Movement
private CharacterController controller;
private float jumpForce = 7.0f;
private float gravity = 12.0f;
private float verticalVelocity;
private int desiredLane = 1; // 0 = Left, 1 = Middle, 2 = Right
// Speed Modifier
private float originalSpeed = 8.5f;
private float speed = 7.0f;
public GameObject Player;
public ParticleSystem MagnetParticles;
public ParticleSystem MultiplyParticles;
public float speedPowerupTime;
public float PowerupDuration = 5;
Vector3 temp = new Vector3(0f, -1, 0);
private void Start()
{
speed = originalSpeed;
controller = GetComponent<CharacterController>();
anim = GetComponent<Animator>();
}
private void Update()
{
if (!isRunning)
return;
// Gather the inputs on which lane we should be in
if (MobileInput.Instance.SwipeLeft)
MoveLane(false);
if (MobileInput.Instance.SwipeRight)
MoveLane(true);
// calculate where we should be in the future
Vector3 targetPosition = transform.position.z * Vector3.forward;
if (desiredLane == 0)
targetPosition += Vector3.left * LANE_DISTANCE;
else if (desiredLane == 2)
targetPosition += Vector3.right * LANE_DISTANCE;
// Lets calculate our move delta
Vector3 moveVector = Vector3.zero;
moveVector.x = (targetPosition - transform.position).normalized.x * speed;
bool isGrounded = IsGrounded();
anim.SetBool("Grounded", isGrounded);
// Calculate Y
if (isGrounded) // if Grounded
{
verticalVelocity = -0.1f;
if (MobileInput.Instance.SwipeUp)
{
// Jump
FindObjectOfType<AudioManager>().Play("Jump");
anim.SetTrigger("Jump");
verticalVelocity = jumpForce;
}
else if (MobileInput.Instance.SwipeDown)
{
// Slide
FindObjectOfType<AudioManager>().Play("Slide");
StartSliding();
Invoke("StopSliding", 1.0f);
}
}
else
{
verticalVelocity -= (gravity * Time.deltaTime);
// Fast Falling Mechanic
if (MobileInput.Instance.SwipeDown)
{
verticalVelocity = -jumpForce;
}
}
moveVector.y = verticalVelocity;
moveVector.z = speed;
controller.Move(moveVector * Time.deltaTime);
// Rotate the Character to Where She is Going
Vector3 dir = controller.velocity;
if (dir != Vector3.zero)
{
dir.y = 0;
transform.forward = Vector3.Lerp(transform.forward, dir, 0.05f);
}
}
public void SetSpeed(float modifier)
{
speed = 5 + modifier;
}
private void StartSliding()
{
anim.SetBool("Sliding", true);
controller.height /= 2;
controller.center = new Vector3(controller.center.x, controller.center.y / 2, controller.center.z);
MagnetParticles.transform.position += temp;
MultiplyParticles.transform.position += temp;
}
private void StopSliding()
{
anim.SetBool("Sliding", false);
MagnetParticles.transform.position -= temp;
MultiplyParticles.transform.position -= temp;
controller.height *= 2;
controller.center = new Vector3(controller.center.x, controller.center.y * 2, controller.center.z);
}
private void MoveLane(bool goingRight)
{
desiredLane += (goingRight) ? 1 : -1;
desiredLane = Mathf.Clamp(desiredLane, 0, 2);
}
private bool IsGrounded()
{
Ray groundRay = new Ray(new Vector3(controller.bounds.center.x, (controller.bounds.center.y - controller.bounds.extents.y) + 0.2f, controller.bounds.center.z), Vector3.down);
return Physics.Raycast(groundRay, 0.2f + 0.1f);
}
public void StartRunning()
{
isRunning = true;
anim.SetTrigger("StartRunning");
}
private void Crash()
{
Player.GetComponent<CharacterController>().enabled = false;
isRunning = false;
GameManager.Instance.OnDeath();
anim.SetTrigger("Death");
speed = -1.0f;
}
private void OnControllerColliderHit(ControllerColliderHit hit)
{
if (hit.gameObject.tag == "Obstacle")
{
if (!invincible)
{
if (!shield)
{
Crash();
}
else
{
shield = false;
FindObjectOfType<PowerUpSpawner>().shield.GetComponent<Shield>().Disable();
}
}
hit.collider.enabled = false;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Swipe controls error "Cannot implicitly convert type 'UnityEngine.Touch' to 'Touch' " 1 Answer
How to accept swipe input when already touching with one finger. 0 Answers
Using Input.GetAxis variable for Touch Controls 1 Answer
when i drag my finger on mobile screen gameobject move left or right but not follow my finger 1 Answer
Touch controls 0 Answers