на карте камерой с помощью ПКМ все работает и объект двигается с помощью AWSD (не в те стороны что нужно , но не суть). Нужно сделать чтоб тыкнув ЛКМ по объекту, камера прикреплялась к объекту и двигать объект с камерой, а с помощью кнопки отсоединить камеру.. все это делается норм. А вот некоторые мелочи исправить не получается, это. Если отодвинуть объект с камерой и отсоедениться, то камера возвращается на старое место, если отодвинуть объект подольше от начальной позиции и тыкнуть ЛКМ, то камера прикрепляется хз где . в итоге камера и объект какбудто с разными скоростями чтоли и координаты какбудто начальные в центре есть и все крутится вокруг них, отодвинешь объект очень далеко то вообще бардак.. нужно чтоб прикреплялся везде нормально и отсооединялся на месте объекта, а не улетала в начало. может в 3д проблема?! уже устал перепробывать все подряд (
два кода (хихи):
using UnityEngine;
public class CameraController : MonoBehaviour
{
public static CameraController instance;
public Transform followTransform;
public Transform cameraTransform;
public float movementTime;
public Vector3 newPosition;
public Vector3 dragStartPosition;
public Vector3 dragCurrentPosition;
void Start()
{
instance = this;
newPosition = transform.position;
}
void Update()
{
if (followTransform != null)
{
transform.position = followTransform.transform.position + newPosition;
}
else
{
HandleMouseInput();
}
if (Input.GetKeyDown(KeyCode.G))
{
followTransform = null;
}
}
void HandleMouseInput()
{
if (Input.GetMouseButtonDown(1))
{
Plane plane = new Plane(Vector3.forward, Vector3.right);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float entry;
if(plane.Raycast(ray, out entry))
{
dragStartPosition = ray.GetPoint(entry);
}
}
if (Input.GetMouseButton(1))
{
Plane plane = new Plane(Vector3.forward, Vector3.right);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float entry;
if (plane.Raycast(ray, out entry))
{
dragCurrentPosition = ray.GetPoint(entry);
newPosition = transform.position + dragStartPosition - dragCurrentPosition;
}
}
transform.position = Vector3.Lerp(transform.position, newPosition, Time.deltaTime * movementTime);
}
}
==================
using UnityEngine;
public class Motorcycle : MonoBehaviour
{
public void OnMouseDown()
{
CameraController.instance.followTransform = transform;
}
}