0

我创建了一个与地形和一些模型相结合的 3D 游戏,玩家可以去任何他想去的地方,并且摄像机会跟随他。

我的问题是当用户在一棵树后面时,如何使树透明?

我已经使用 Ray 投射对其他模型进行了处理,但是树木是地形的一部分,因此我得到的是地形材质而不是特定的树木。

有任何想法吗?

提前致谢

4

2 回答 2

0

识别问题

树木是地形的一部分,如果您需要制作树木,您可以轻松完成。树将有一个预制类,每当游戏对象与任何树碰撞时,碰撞任务或说事件就会执行

解决方案

可以在地形的随机位置轻松创建数千棵树,然后可以通过标记轻松完成碰撞,并且生成树的代码将在碰撞器代码中。树木将被禁用。Ienumerator 可以应用在更新方法中。waitForSeconds(30) 将等待 30 秒,然后代码

gameobject.setactive(true)

将树木带回各自的位置

在 start 方法中在随机位置创建树的代码

 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);
        }
于 2019-02-21T15:21:34.377 回答
0

那么最好的解决方案是从相机开始一条射线向前,然后将相机放在比碰撞点更远的地方,这样你就看不到树了。

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;

请记住将旧相机位置从应该放在哪里,以便相机不会离开并停留在那里,并且相机和旧相机在发生这种情况之前具有相同的位置和旋转代码,然后您只需更改它们的位置. 我的意思是我不知道这是否可以,但您可以从中得出结论。

对不起,我来自西班牙。

于 2018-11-19T19:29:19.017 回答