2017-02-22 22 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

代わりに、この場合には、あまりにも多くの「数学」を使用してのトリックを使用することができます。

要素が選択されている場合、それらの「アンカー」

を呼び出すことができます、あなたは、単にアンカーのカメラ子供を作る、あなたのカメラの周りを回転する要素のそれぞれに、空のゲームオブジェクトが存在します。

アンカーを回転するだけの場合、カメラは子供のため回転します。

これで効果が得られます。

Hereは、オブジェクトを回転させるための簡単な例です。

Hereは、Unityの回答のも​​う1つです。

希望すると便利です。乾杯!

+0

ありがとう!私はそれを試してみます –

関連する問題