Unity3d:相机碰撞脚本不起作用

时间:2018-07-14 02:40:33

标签: unity3d camera collision-detection

来自世界各地的Hello程序员。我遇到了一个名为CameraCollision.cs的脚本问题。它的作用是检查摄像头是否与物体碰撞,然后将摄像头移到该物体的前面而不是与之相交。问题在于它在技术上是可行的,因为每次相机相交和物体对准时,相机和播放器之间的距离都会减小。我通过公开我的距离变量来检查它,以便我知道它可以工作。距离会改变,但是由于某种原因,摄像头不会在相交的对象之前移动。任何帮助,将不胜感激。这是代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraCollision : MonoBehaviour {

     public float minDistance = 1.0f;
     public float maxDistance = 4.0f;
     public float smooth = 10.0f;
     Vector3 dollyDir;
     public Vector3 dollyDirAdjusted;
     public float distance;

     // Use this for initialization
     void Awake () {
          dollyDir = transform.localPosition.normalized;
          distance = transform.localPosition.magnitude;
     }

     // Update is called once per frame
     void Update () {
           Vector3 desiredCameraPos = transform.parent.TransformPoint(dollyDir * maxDistance);
           RaycastHit hit;

           if(Physics.Linecast(transform.parent.position, desiredCameraPos, out hit))
           {
                 distance = Mathf.Clamp((hit.distance * 0.87f), minDistance, maxDistance);

           }
           else
           {
                 distance = maxDistance;
           }

           transform.localPosition = Vector3.Lerp(transform.localPosition, dollyDir * distance, Time.deltaTime * smooth);
     }
}

0 个答案:

没有答案