2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.4 KiB
C#

using UnityEngine;
using FluidDynamics;
public class CameraMovement : MonoBehaviour {
public Main_Fluid_Simulation sim;
public KeyCode plpus;
public KeyCode minus;
public KeyCode plpusS;
public KeyCode minusS;
public float camplusspeed;
public float speed;
Vector3 prevpos;
Vector3 mpos;
Bounds _bounds;
Bounds _cam_bounds;
public Vector3 boundsSize;
public Vector2 Camerabounds;
Camera cam;
Vector2 camSize;
float defaultcamsize;
// Use this for initialization
void Start () {
cam = GetComponent<Camera>();
float size = cam.orthographicSize * 2;
float width = size * (float)Screen.width / Screen.height;
float height = size;
camSize = new Vector2(width, height)/2;
_cam_bounds.center = transform.position;
_cam_bounds.size = Camerabounds;
defaultcamsize = cam.orthographicSize;
}
// Update is called once per frame
void Update () {
cam.orthographicSize = Mathf.Clamp(cam.orthographicSize, 0, defaultcamsize);
if (Input.GetKey(plpus))
cam.orthographicSize+= camplusspeed*Time.deltaTime;
if (Input.GetKey(minus))
cam.orthographicSize -= camplusspeed * Time.deltaTime;
if (Input.GetKey(plpusS))
sim.Vorticity += camplusspeed * Time.deltaTime;
if (Input.GetKey(minusS))
sim.Vorticity -= camplusspeed * Time.deltaTime;
_bounds.size = boundsSize;
_bounds.center = transform.position;
mpos = Input.mousePosition;
prevpos = new Vector3(Camera.main.ScreenToWorldPoint(mpos).x, Camera.main.ScreenToWorldPoint(mpos).y,transform.position.z);
if (!_bounds.Contains(prevpos))
{
transform.position = Vector3.Lerp(transform.position, prevpos, speed*Time.deltaTime);
}
transform.position = new Vector3(Mathf.Clamp(transform.position.x, _cam_bounds.min.x + camSize.x, _cam_bounds.max.x - camSize.x), Mathf.Clamp(transform.position.y, _cam_bounds.min.y + camSize.y, _cam_bounds.max.y- camSize.y),transform.position.z);
}
private void OnDrawGizmos()
{
Gizmos.color = Color.green;
Gizmos.DrawWireCube(transform.position, new Vector2(boundsSize.x , boundsSize.y));
Gizmos.DrawWireCube(transform.position, new Vector2(Camerabounds.x, Camerabounds.y));
}
}