- Home /
C# How do I implement swipe controls into my mobile game?
I'm making an isometric tile-based game where the player moves a set distance tile-by-tile up, down, left, of right. Right now my player is moving with the WASD keys. I want the player to move in the direction that you swipe.
I went online and found this script: var startTime: float; var startPos: Vector2; var couldBeSwipe: boolean; var comfortZone: float; var minSwipeDist: float; var maxSwipeTime: float;
function Update() {
if (iPhoneInput.touchCount > 0) {
var touch = iPhoneInput.touches[0];
switch (touch.phase) {
case iPhoneTouchPhase.Began:
couldBeSwipe = true;
startPos = touch.position;
startTime = Time.time;
break;
case iPhoneTouchPhase.Moved:
if (Mathf.Abs(touch.position.y - startPos.y) > comfortZone) {
couldBeSwipe = false;
}
break;
case iPhoneTouchPhase.Stationary:
couldBeSwipe = false;
break;
case iPhoneTouchPhase.Ended:
var swipeTime = Time.time - startTime;
var swipeDist = (touch.position - startPos).magnitude;
if (couldBeSwipe (swipeTime < maxSwipeTime) (swipeDist > minSwipeDist)) {
// It's a swiiiiiiiiiiiipe!
var swipeDirection = Mathf.Sign(touch.position.y - startPos.y);
// Do something here in reaction to the swipe.
}
break;
}
}
}
Here is the script I have right now to make the player move a set distance of 1 for each button press:
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
Vector3 pos; // For movement
float speed = 2.0f; // Speed of movement
static bool[] moving;
void Start () {
moving = new bool[5];
pos = transform.position; // Take the initial position
GetComponent<BoxCollider2D>().enabled = false;
}
void FixedUpdate () {
if (gameObject.tag == "Player") {
moving[4] = !(Vector2.Distance(transform.position, pos) < 0.01f);
}
else {
moving[GetComponent<CollectFruit>().ID] = !(Vector2.Distance(transform.position, pos) < 0.01f);
}
bool doneMoving = DoneMoving ();
if (doneMoving) {
GetComponent<BoxCollider2D>().enabled = true;
}
if(Input.GetKey(KeyCode.A) && doneMoving && transform.position.x > -1.9f) { // Left
pos += Vector3.left;
}
if(Input.GetKey(KeyCode.D) && doneMoving && transform.position.x < 1.9f) { // Right
pos += Vector3.right;
}
if(Input.GetKey(KeyCode.W) && doneMoving && transform.position.y < 1.9f) { // Up
pos += Vector3.up;
}
if(Input.GetKey(KeyCode.S) && doneMoving && transform.position.y > -1.9f) { // Down
pos += Vector3.down;
}
transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed); // Move there
}
public bool DoneMoving() {
return !moving[0] && !moving[1] && !moving[2] && !moving[3] && !moving[4];
}
}
How would I implement the swipe controls into my player movement script?
Your answer
Follow this Question
Related Questions
How to limit the swipe in a certain area. 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Change the rotation of Z through swipe 0 Answers
How to create a Touch Pad to control camera rotation 0 Answers