Unity - зажимная функция RotateAround для камеры? - PullRequest
0 голосов
/ 21 октября 2018

Я играю в игру, в которой игрок вращает камеру (потомок держателя камеры) вокруг планеты.Мне нужно иметь возможность фиксировать положение (и вращение) камеры в определенные моменты времени.Я использую функцию RotateAround, и мне было интересно, если кто-то может помочь мне, чтобы иметь возможность это исправить?Мой код ниже:

private void RotateCamera(Vector3 dragStartPosition, Vector3 dragEndPosition)
 {

     //normalised for odd edges
     dragEndPosition = dragEndPosition.normalized *planetRadius;
     dragStartPosition = dragStartPosition.normalized * planetRadius;

     // Cross Product
     Vector3 cross = Vector3.Cross(dragEndPosition, dragStartPosition);

     // Angle for rotation
     float angle = Vector3.SignedAngle(dragEndPosition, dragStartPosition, cross);

     //Causes Rotation of angle around the vector from Cross product
     holderTransform.RotateAround(planet.transform.position , cross, angle);

     EventHandler.instance.AddHiddenEvent(EventHandler.EventType.panCamera);
 }


 private static Vector3? GetMouseHit()
 {
     RaycastHit hit;
     int layer_mask = LayerMask.GetMask("Planet"); //raycasting on the planet
     if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, layer_mask))
     {
         return hit.point;
     }
     return null;
 }

1 Ответ

0 голосов
/ 21 октября 2018

Используйте функцию Mathf.clamp ().

public static float Clamp(float value, float min, float max);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...