unity3d学习(四)

本文介绍了Unity中解决Projector穿透问题的方法,通过动态调整投影范围实现精确投影效果。此外,还提供了一种递归设置GameObject及其子对象Layer的实用脚本,并展示了如何动态改变GameObject及其所有子对象的阴影接收与产生状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、projector 投影穿透问题

unity里的projector投影器(譬如用来做人物脚底下的阴影等)投射下来,只要在near和far之间的物体表面都会被投射到,这不是一般游戏需要的效果,一般只需要在第一个面上投射即可。

目前的解决方案时,投影器update里,动态raycast最近的面,去设置他的near和far

http://answers.unity3d.com/questions/160596/blob-shadow-going-through-multiple-objects.html


2、脚本里动态改某gameobject的layer以及所有子的layer

unity里gameobject动态改active可以只改自身(GameObject.active),也可以同时更改其所有子的active(GameObject.SetActiveRecursively)。

unity里gameobject动态改layer只提供了更改自身的layer方法,不会更改所有子的layer。可以自己写一个

private void SetLayerRecursively(Transform parent, int layer)
    {
        parent.gameObject.layer = layer;
        foreach (Transform child in parent)
        {
            InnerSetLayerRecursively(child, layer);
        }
    }

3、动态改某gameobject以及所有子的render的接受阴影以及产生阴影等

/// <summary>
    /// 自己以及所有子是否接受阴影
    /// </summary>
    public bool receiveShadows
    {
        set
        {
            Renderer[] renders = GetComponentsInChildren<Renderer>(true);
            //
            foreach (Renderer render in renders)
            {
                render.receiveShadows = value;
            }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值