Salut,
je fais un str/gestion 2d et j'ai un systeme de mouvement de caméra qui fonctionne sans aucun problème. Je me suis inspiré d'un script du forum officiel pour le réaliser.
Par contre je ne peux plus te citer le nom de ma source
...
Si tu veux t'en inspirer, il est tout à fait fonctionnel :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class CameraMoving : MonoBehaviour {
public GameObject Camera;
public float speed = 0.4f;
private int mapsize;
private float limitex;
private float limitey;
void Start(){
//taille de la map
mapsize = BackgroundGenerator.mapsize;
//position initiale cam
float campos = mapsize*10/2;
Camera.transform.position = new Vector3 (campos, campos, -10);
// limite droite et haute de la map
limitex = (mapsize)*8-5;
limitey = (mapsize)*8-2;
}
void Update(){
//cam persp seulement
/*
if((Input.GetAxis ("Mouse ScrollWheel") > 0)&&(Camera.transform.position.z<-5))
{
Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y, Camera.transform.position.z + (1 * speed));
}
if((Input.GetAxis ("Mouse ScrollWheel") < 0)&&(Camera.transform.position.z>-20))
{
Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y, Camera.transform.position.z - (1 * speed));
}
*/
if(( ((Input.mousePosition.x >= (Screen.width * 0.9))||Input.GetKey(KeyCode.RightArrow))&&(Camera.transform.position.x<limitex)))
//Camera movement when the cursor is beyond a certain point of the screen
{
Camera.transform.position = new Vector3(Camera.transform.position.x + (1 * speed), Camera.transform.position.y, Camera.transform.position.z);
}
if(( ((Input.mousePosition.x <= (Screen.width * 0.1))||Input.GetKey(KeyCode.LeftArrow))&&(Camera.transform.position.x>3.2)))
{
Camera.transform.position = new Vector3(Camera.transform.position.x - (1 * speed), Camera.transform.position.y, Camera.transform.position.z);
}
if(( ((Input.mousePosition.y >= (Screen.height * 0.9))||Input.GetKey(KeyCode.UpArrow))&&(Camera.transform.position.y<limitey)))
{
Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y + (1 * speed),Camera.transform.position.z);
}
if(( ((Input.mousePosition.y <= (Screen.height * 0.1))||Input.GetKey(KeyCode.DownArrow))&&(Camera.transform.position.y>0)))
{
Camera.transform.position = new Vector3(Camera.transform.position.x, Camera.transform.position.y - (1 * speed),Camera.transform.position.z);
}
}
}
si ça peut t'aider...