问题:在旋转拖拽过程中,碰到山脉会穿模
解决办法:
原理:从摄像机看向的中心位置发射一条朝向摄像机的射线,若中间碰到了地形碰撞器,则代表穿模,需要修改normaldistance。
为保证从中心位置发射的射线始终朝向摄像机,需要给中心位置放置物体,且添加始终面向摄像机的脚本
为了保证效果,应该在山脉外加一层新的碰撞器,如果要求不高,直接用原本的山脉就可以啦
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColliderTest : MonoBehaviour
{
public GameObject center;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Vector3 dir = center.transform.forward;
RaycastHit hit;
if (Physics.Raycast(center.transform.position,dir,out hit))
{
//Cube (2)改成自己不想穿透的模型
if (hit.collider.name == "Cube (2)"&& Vector3.Distance(center.transform.position, hit.point)<=CameraMove.normalDistance)
{
Debug.Log(hit.point+","+CameraMove.normalDistance);
//Vector3 angle = Camera.main.transform.eulerAngles;
//Camera.main.transform.position = hit.point;
CameraMove.normalDistance = Vector3.Distance(center.transform.position, hit.point);
//Debug.DrawLine(Camera.main.transform.position, hit.point, Color.red);
}
}
}
}
文章评论