unity3d学习(四)

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;
            }
        }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值