我已经创建了一个3D游戏,该游戏结合地形和某些模型,使玩家可以走到他想要的任何地方,并且摄像机跟随他。
我的问题是,当用户在树后面时,如何使树透明?
我已经使用Ray投射对其他模型进行了处理,但是树木是地形的一部分,因此我得到的是地形材质,而不是特定的树木。
有什么想法吗?
预先感谢
答案 0 :(得分: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;
请记住将旧相机放置在应该放置的位置,以便相机不会离开并停留在那里,并且在此之前,相机和旧相机具有相同的位置和旋转代码,然后您只需改变他们的位置。我的意思是我不知道是否可以,但是您可以从中得出结论。
对不起,我来自西班牙。
答案 1 :(得分:0)
树木是地形的一部分,如果您需要制作树木,则可以轻松完成。这些树将具有一类预制物,只要游戏对象与任何树发生碰撞,碰撞任务或说事件都会执行
很容易在地形的随机位置上创建数千棵树,然后可以通过标记轻松地完成碰撞,而在对撞机代码中将用于生成树木的代码。树木将被禁用。 Ienumerator可以应用在update方法中。 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);
}