Я создаю игру в мини-гольф в Unity.Механика для стрельбы по мячу должна быть механикой щелчка и перетаскивания.Я хочу, чтобы мяч оставался на той же оси Y, что и игровое поле.При том, что у меня есть, ось y шара остается той же, но точки x и z шара не следуют за моей мышью, как мне бы хотелось.В настоящее время они вращаются вокруг SphereCollider LaunchPoint, но мяч не соединен с мышью.Я искал решения, но у меня нет опыта работы с камерами, как в Unity, поэтому они не помогли мне понять что-либо.
Вот мой код:
void Update () {
// If ball is not in aimingmode, dont run this code
if (!aimingMode) return;
// Get the current mouse position in 2D screen coordinates
Vector3 mousePos2D = Input.mousePosition;
mousePos2D.y = launchPos.y;
// Find the delta from the launchPos to the mousePos2D
Vector3 mouseDelta = mousePos2D - launchPos;
// Limit the mouse delta to the radius of the spherecollider
float maxMagnitude = this.GetComponent<SphereCollider>().radius;
if(mouseDelta.magnitude > maxMagnitude)
{
mouseDelta.Normalize();
mouseDelta *= maxMagnitude;
}
// Move the ball to this new position
Vector3 projPos = launchPos + mouseDelta;
projectile.transform.position = projPos;
if (Input.GetMouseButtonUp(0))
{
// The mouse has been released
aimingMode = false;
projectileRigidbody.isKinematic = false;
projectileRigidbody.velocity = -mouseDelta * velocityMult;
projectile = null;
}
}
Будет ли решение как-то связано с ScreenToWorldCoordinates или чем-то подобным?Я пытался использовать этот метод, но получил ошибку, которая, по-моему, связана с камерой, говоря: «Ссылка на объект не установлена на экземпляр объекта».(Примечание: камера находится в режиме перспективы).Точная линия, которую я использовал для этого, была:
Vector3 mousePos3D = Camera.main.ScreenToWorldPoint(mousePos2D);
Может ли кто-нибудь объяснить, как получить координаты мяча в качестве координат мыши?
РЕДАКТИРОВАТЬ: Ну,ошибка была смущающей очевидной ошибкой.Я как-то изменил тег моей основной камеры.