Je tente de faire une camera en vue du dessus sur mobile, j'ai un problème dans le fait de se déplacer dans l’environnement en glissant avec le doigt.
En effet, les mouvements ne sembles pas naturels du tout, c'est difficile à décrire. De plus je ne sais pas comment faire pour adapter la vitesse de déplacement au zoom de la camera (Code pour le zoom: http://www.devination.com/2013/07/unity ... -zoom.html)
Le code:
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class SwipeMove : MonoBehaviour
{
public float minSwipeDistY;
public float minSwipeDistX;
int speed = 14;
private Vector2 startPos;
void Update()
{
if (Input.touchCount == 1)
{
Touch touch = Input.touches[0];
switch (touch.phase)
{
case TouchPhase.Began:
startPos = touch.position;
break;
case TouchPhase.Moved:
float swipeDistVertical = (new Vector3(0, touch.position.y, 0) - new Vector3(0, startPos.y, 0)).magnitude;
if (swipeDistVertical > minSwipeDistY)
{
float swipeValue = Mathf.Sign(touch.position.y - startPos.y);
if (swipeValue != 0)
{
if (swipeValue > 0)
{
transform.Translate(Vector3.up * -(swipeValue) * speed * Time.deltaTime);
}//up swipe
else if (swipeValue < 0)
{
transform.Translate(Vector3.down * -(-(swipeValue) * speed) * Time.deltaTime);
}//down swipe
}
}
float swipeDistHorizontal = (new Vector3(touch.position.x, 0, 0) - new Vector3(startPos.x, 0, 0)).magnitude;
if (swipeDistHorizontal > minSwipeDistX)
{
float swipeValue = Mathf.Sign(touch.position.x - startPos.x);
if (swipeValue != 0)
{
if (swipeValue > 0)
{
transform.Translate(Vector3.right * -(swipeValue) * speed * Time.deltaTime);
}//right swipe
else if (swipeValue < 0)
{
transform.Translate(Vector3.left * -(-(swipeValue) * speed) * Time.deltaTime);
}//left swipe
}
}
startPos = touch.position;
break;
case TouchPhase.Stationary:
startPos = touch.position;
break;
}
}
}
}
Je débute dans le domaine, je ne vois donc pas trop ce qui ne va pas.
Merci d'avance pour vos réponses