Привет всем,делаю игрулю rts,стратегия,top-down как вам угодно.
Двигаю камеру мышкой (для примера: как в варкрафте),все почти нормально то что мне нужно, есть большое но.
Как мне ограничить камеру что бы она могла перемещаться только в пределах террейна допустим?
Вот код как я ее двигаю.
Код
using UnityEngine;
using System.Collections;
public class CameraControler : MonoBehaviour
{
public float SharpneasZoom;
public float CameraPosition;
public float CameraZoomMax;
public float CameraZoomMin;
public float CameraSpeed;
public RaycastHit Hit;
void Start()
{
}
// Update is called once per frame
void Update()
{
CameraHeightPosition();
CameraWidthPosition();
}
void CameraHeightPosition()
{
Vector3 DirectionRay = transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, DirectionRay, out Hit, 100))
{
if (Hit.collider.tag == "Terrainz")
{
if (Hit.distance < CameraPosition)
{
transform.position += new Vector3(0, CameraPosition - Hit.distance, 0);
}
if (Hit.distance > CameraPosition)
{
transform.position -= new Vector3(0, Hit.distance - CameraPosition, 0);
}
}
}
if ((Input.GetAxis("Mouse ScrollWheel") < 0) && (CameraPosition < CameraZoomMin))
{
CameraPosition += 7 * SharpneasZoom * Time.deltaTime;
CameraSpeed += 0.007f;
}
if ((Input.GetAxis("Mouse ScrollWheel") > 0) && (CameraPosition > CameraZoomMax))
{
CameraPosition -= 7 * SharpneasZoom * Time.deltaTime;
CameraSpeed -= 0.007f;
}
}
void CameraWidthPosition()
{
//if (MS.NowMouseState == MouseState.MouseStats.Default)
if (20 > Input.mousePosition.x)
{
transform.position -= new Vector3(CameraSpeed, 0, 0);
}
if ((Screen.width - 10) < Input.mousePosition.x)
{
transform.position += new Vector3(CameraSpeed, 0, 0);
}
if (20 > Input.mousePosition.y)
{
transform.position -= new Vector3(0, 0, CameraSpeed);
}
if ((Screen.height - 10) < Input.mousePosition.y)
{
transform.position += new Vector3(0, 0, CameraSpeed);
}
}
}
тут еще регулировка высоты камеры с учетом рельефа..
прошу и жду вашей помощи !!!