我创建了一个与地形和一些模型相结合的 3D 游戏,玩家可以去任何他想去的地方,并且摄像机会跟随他。
我的问题是当用户在一棵树后面时,如何使树透明?
我已经使用 Ray 投射对其他模型进行了处理,但是树木是地形的一部分,因此我得到的是地形材质而不是特定的树木。
有任何想法吗?
提前致谢
我创建了一个与地形和一些模型相结合的 3D 游戏,玩家可以去任何他想去的地方,并且摄像机会跟随他。
我的问题是当用户在一棵树后面时,如何使树透明?
我已经使用 Ray 投射对其他模型进行了处理,但是树木是地形的一部分,因此我得到的是地形材质而不是特定的树木。
有任何想法吗?
提前致谢
树木是地形的一部分,如果您需要制作树木,您可以轻松完成。树将有一个预制类,每当游戏对象与任何树碰撞时,碰撞任务或说事件就会执行
可以在地形的随机位置轻松创建数千棵树,然后可以通过标记轻松完成碰撞,并且生成树的代码将在碰撞器代码中。树木将被禁用。Ienumerator 可以应用在更新方法中。waitForSeconds(30) 将等待 30 秒,然后代码
gameobject.setactive(true)
将树木带回各自的位置
public GameObject trees;
for (int i = 0; i < 300; i++)
{
Vector3 localPosition = new Vector3(Random.Range(-200, 100), 0 , Random.Range(-200, 100));
Instantiate(trees, localPosition, Quaternion.identity);
}
那么最好的解决方案是从相机开始一条射线向前,然后将相机放在比碰撞点更远的地方,这样你就看不到树了。
Ray ray = new Ray(oldCam.position, oldCam.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 5)){
cam.position = hit.point + oldCam.forward;
} else
cam.position = oldCam.position;
请记住将旧相机位置从应该放在哪里,以便相机不会离开并停留在那里,并且相机和旧相机在发生这种情况之前具有相同的位置和旋转代码,然后您只需更改它们的位置. 我的意思是我不知道这是否可以,但您可以从中得出结论。
对不起,我来自西班牙。