来自世界各地的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);
}
}