触摸团结3d时旋转相机

时间:2017-02-22 05:20:17

标签: c# unity3d rotation

在这里。我有一个人体解剖学,我想在任何地方触摸时旋转相机。但看着人体解剖学。我怎么能这样做:(

[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 个答案:

答案 0 :(得分:1)

你可以使用技巧而不是使用过多的数学&#34;数学&#34;在这种情况下。

在你想让你的相机旋转的每个元素中都会有空的游戏对象,让我们调用那些&#34;锚点&#34;

选择元素后,只需将相机作为锚点的子项。

然后如果您只是旋转锚点,相机将会旋转,因为它是孩子。

这将获得您想要的效果。

Here是来自youtube的一个简单示例,用于旋转对象。

Here是另一个来自Unity的答案。

希望这有帮助!干杯!