1
我有一個相機,我想圍繞一個點(0,0,0)在所有方向旋轉,但我想把一個鉗位,所以它不能太高或過低。我已經看到這個問題在前面的左側和右側的方向回答,但從來沒有爲垂直的方向回答。如何限制(鉗制)Y軸旋轉transform.rotatearound統一
我已經嘗試從這兩個問題(基本上說是相同的東西)的代碼轉換爲垂直方向工作,但它沿着旋轉一些點出錯,我不明白爲什麼。
First Question,Second Question
這就是我如何試圖將它轉換:
//how much we want to rotate by this frame
float rotX = Input.GetAxis("Mouse X") * rotSpeed;
float rotY = Input.GetAxis("Mouse Y") * rotSpeed; //(before clamping)
//find current direction
Vector3 currentDirection = transform.position - Vector3.zero;
//find current angle between basis for clamp & where we are now
float angle = Vector3.Angle(Vector3.forward, currentDirection);
//finds out if it's up or down
if (Vector3.Cross(Vector3.forward, currentDirection).x < 0) angle = -angle;
//find out how much you can move without violating limits
float newAngle = Mathf.Clamp(angle + rotY, yMinLimit, yMaxLimit);
//grabs how much you are allowed to move the angle from the current angle
rotY = newAngle - angle;
//spinning the garden
transform.RotateAround(Vector3.zero, Vector3.up, rotX);
transform.RotateAround(Vector3.zero, transform.TransformDirection(Vector3.right), -rotY); //vertical rotation
如果有人知道的正確方法,使這項工作,爲Y軸,或以不同的方式夾緊垂直旋轉,我會非常激動聽到它!泰!
對不起,我花了幾天的時間回覆!最後有時間來測試它,它完美的工作!在我的搜索答案中,我發現了另一篇有關同一問題的Unity Answers的文章,你介意我是否傳遞了這篇文章的鏈接? –
我不介意。事實上,我很高興知道這個答案會幫助更多的人。 :-)(對你評論的延遲迴答感到抱歉) – Fenixrw