unity通关射线检测实现3d模型自适应地形起伏
该方法是一种取巧的方式,不通关人物碰撞器什么的,很简单的一种思路
通过在模型的位置每次移动时向下发射一条射线检测,检测到地面碰撞器时,获取碰撞点的坐标的y值赋值给移动目标点的y值就好了,这里需要注意是3d场景的地形一定要具有碰撞器,这里一般会需要建模的小伙伴配合
//模型坐标
Vector3 modePositon = Vector3.zero;
//这里最好往上面抬点 避免获取的坐标在地形碰撞器下面
modePositon.y = modePositon.y + 2;
RaycastHit hit;
//这里最高设置高检测的层级
var result = Physics.Raycast(modePositon, -Vector3.up, out hit, Mathf.Infinity, 10);
if (result)
{
if (hit.collider.name == "xxx")
{
//获取到了y值 复制给移动点的y值就好了
float y = hit.point.y;
}
}