using UnityEngine;
using System.Collections;
public class CameraControl_Basic : MonoBehaviour {
public Transform m_CameraTarget;
public float m_Distance = 80.0f;
public float xSpeed = 4.0f;
public float ySpeed = 4.0f;
public int yMinLimit = -50;
public int yMaxLimit = 80;
public float minDist = 5.0f;
public float maxDist = 5.0f;
public float m_MinElevation = -30.0f;
public float m_MaxElevation = 30.0f;
private float m_x = 0.0f;
private float m_y = 0.0f;
// Use this for initialization
void Start ()
{
UpdateCamera();
}
// Update is called once per frame
void Update ()
{
if (m_CameraTarget )
{
bool input = false;
// Left Mouse Orbit
if ( Input.GetMouseButton(0) )
{
input = true;
m_x += Input.GetAxis(“Mouse X”) * xSpeed;
m_y -= Input.GetAxis(“Mouse Y”) * ySpeed;
m_y = ClampAngle(m_y, yMinLimit, yMaxLimit);
Debug.Log(“bouton gauche enfonce”);
}
if ( Input.GetMouseButton(1) )
{
input = true;
m_Distance -= Input.GetAxis(“Mouse Y”) * ySpeed;
if (m_Distance < minDist) m_Distance = minDist;
if (m_Distance > maxDist) m_Distance = maxDist;
Debug.Log(“bouton droit enfonce”);
}
if ( Input.GetMouseButton(2))
{
input = true;
Vector3 tmp = m_CameraTarget.position;
tmp.y = tmp.y - ( Input.GetAxis(“Mouse Y”) * ySpeed);
tmp.x = tmp.x - ( Input.GetAxis(“Mouse X”) * ySpeed);
if (tmp.y < m_MinElevation) tmp.y = m_MinElevation;
if (tmp.y > m_MaxElevation) tmp.y = m_MaxElevation;
m_CameraTarget.position = tmp;
Debug.Log(“molette enfoncee”);
}
if (Input.GetAxis(“Mouse ScrollWheel”) != 0){
input = true;
m_Distance -= Input.GetAxis(“Mouse ScrollWheel”) * ySpeed;
if (m_Distance < minDist) m_Distance = minDist;
if (m_Distance > maxDist) m_Distance = maxDist;
Debug.Log(“molette tourne”);
}
if (input) UpdateCamera();
}
}
public void UpdateCamera ()
{
Vector3 dist = new Vector3(0.0f, 0.0f, -m_Distance);
Quaternion rotation = Quaternion.Euler(m_y, m_x, 0.0f);
Vector3 position = rotation * dist + m_CameraTarget.position;
transform.rotation = rotation;
transform.position = position;
}
/*
void AdjustElevation ()
{
Vector3 tmp = m_CameraTarget.position;
tmp.y = tmp.y + ( Input.GetAxis(“Mouse Y”) * ySpeed);
if (tmp.y < m_MinElevation) tmp.y = m_MinElevation;
if (tmp.y > m_MaxElevation) tmp.y = m_MaxElevation;
m_CameraTarget.position = tmp;
}
void AdjustZoom ()
{
m_Distance -= Input.GetAxis(“Mouse Y”) * ySpeed;
if (m_Distance < minDist) m_Distance = minDist;
}
*/
float ClampAngle ( float angle, float min, float max)
{
if (angle < -360) angle += 360;
if (angle > 360) angle -= 360;
return Mathf.Clamp (angle, min, max);
}
}