隐藏播放器时隐藏树木

问题描述 投票:0回答:2

我已经创建了一个与地形和一些模型统一的3D游戏,玩家可以在任何他想要的地方,摄像机跟随他。

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

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

有任何想法吗?

提前致谢

c# unity3d tree raycasting unity3d-terrain
2个回答
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;

请记住将旧的摄像机位置放在应该的位置,以便摄像机不会消失并停留在那里,并且摄像机和旧摄像机在此之前具有相同的位置和旋转代码,然后您只需更改其位置。我的意思是我不知道它是否可以,但你可以从中得出结论。

对不起我来自西班牙的错误。


0
投票

Indentifying issue

树木是地形的一部分,如果你需要树木,你可以很容易地做到。树将具有一类预制件,并且每当游戏对象与任何树碰撞时,碰撞任务或说事件将执行

solution

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

gameobject.setactive(true)

将树木带回各自的位置

code for creating trees at random location in start method

 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);
        }
© www.soinside.com 2019 - 2024. All rights reserved.