2017-02-22 74 views
0

這是它。我有一個人體解剖學,當我觸摸任何地方時,我想旋轉相機。但看着人體解剖學。我怎麼能做到這一點:(當觸摸統一時旋轉攝像頭3d

[https://www.youtube.com/watch?v=EfYeL2FYyyA&t=148s]這正是我真的很想幫幫我吧!

` 

    using UnityEngine; 
    using System.Collections; 
    [AddComponentMenu("Camera-Control/Mouse Orbit with zoom")] 
    public class MouseOrbitImproved : MonoBehaviour { 
public Transform target; 
public float distance = 5.0f; 
public float xSpeed = 120.0f; 
public float ySpeed = 120.0f; 

public float yMinLimit = -20f; 
public float yMaxLimit = 80f; 
public float distanceMin = .5f; 
public float distanceMax = 15f; 
private Rigidbody rigidbody; 
float x = 0.0f; 
float y = 0.0f; 
// Use this for initialization 
void Start() 
{ 
    Vector3 angles = transform.eulerAngles; 
    x = angles.y; 
    y = angles.x; rigidbody = GetComponent<Rigidbody>(); 
    // Make the rigid body not change rotation 
    if (rigidbody != null) 
    { 
     rigidbody.freezeRotation = true; 
    } 
} 
void LateUpdate() 
{ 
    if (target) 
    { 
     x += Input.GetAxis("Mouse X") * xSpeed * distance * 0.02f; 
     y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; 
     y = ClampAngle(y, yMinLimit, yMaxLimit); 
     Quaternion rotation = Quaternion.Euler(y, x, 0); 
     distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel")*5, distanceMin, distanceMax); 
     RaycastHit hit; 
     if (Physics.Linecast (target.position, transform.position, out hit)) 
     { 
      distance -= hit.distance; 
     } 
     Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance); 
     Vector3 position = rotation * negDistance + target.position; 
     transform.rotation = rotation; 
     transform.position = position; 
    } 
} 
public static float ClampAngle(float angle, float min, float max) 
{ 
    if (angle < -360F) 
     angle += 360F; 
    if (angle > 360F) 
     angle -= 360F; 
    return Mathf.Clamp(angle, min, max); 
}} 
+1

請查看[How to ask](http://stackoverflow.com/help/how-to-ask),添加代碼格式,並指定您正在嘗試解決的具體_programming_問題。例如。 「我試圖讓這個框架做到這一點,它應該根據這個(鏈接)文檔工作,但它不會」「。 – yeputons

回答

1

你可以使用的,而不是在這種情況下,使用過多的「數學」一招。

會有在每個你想你的相機繞元素的空gameObjects,讓我們調用這些「錨」

當選擇元素,你只需做錨的相機孩子。

然後如果你只是旋轉錨點,你的相機將旋轉,因爲它是孩子。

這會得到你想要的效果。

Here是一個來自youtube的旋轉對象的簡單示例。

Here是來自Unity的另一個答案。

希望這會有所幫助!乾杯!

+0

謝謝!我會試試看 –