- Home /
RTS CAMERA C#
I have script of moving camera like in RTS:
using UnityEngine;
public class CameraDrag : MonoBehaviour
{
public float dragSpeed = 2;
Vector3 current_position = Vector3.zero;
private Vector3 dragOrigin;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
dragOrigin = Input.mousePosition;
return;
}
if (!Input.GetMouseButton(0)) return;
Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition - dragOrigin);
Vector3 move = new Vector3(pos.x * dragSpeed, 0, pos.y * dragSpeed);
transform.Translate(move * -1, Space.World);
}
}
How can I stoped camera moving on the end of terrain?
Answer by gamenovice · Nov 09, 2012 at 06:55 PM
you could clamp the camera movement. first detect the edge of the terrain and capture its position. then compare your camera's position to the terrains edge position. if it exceeds it by any direction, clamp it in that direction.
Answer by IronFurball · Nov 09, 2012 at 03:57 PM
I guess you could do something like
maxCameraPosRight = 400; if(!camera.transform.position.x > maxCameraPosRight) { //move your camera } else camera.transform.position = new Vector3(camera.transform.position.x-1,camera.transform.position.y,camera.transform.position.z);
^this is to put the camera back when it exeeds his limit.
its just a quick idea.
Your answer
Follow this Question
Related Questions
RTS Camera Script: Mapbounds and Camerascroll (C#) 1 Answer
Pan RTS camera controller without changing elevation/zoom 0 Answers
Distribute terrain in zones 3 Answers
Error about Camera panning. 0 Answers
Multiple Cars not working 1 Answer