Unity项目Lost Crypt分析-3
2020-01-13 本文已影响0人
黑山老雕
摇曳的树木 Vegetation_Wind_Lit Shader
貌似所有摇曳的树木都是基于这个shader。
首先,根据时间的变化,结合世界坐标系,可以创建出一个随时间变化的坐标,将它作为UV给生成的噪声。得到移动的噪声图像。
然后噪声与Calculate Vertex Offset Influence Mask (Based on Sprite's Height)相结合,控制在顶端的位移更大,在底部的位移更小。然后作为位移偏移量,加到现有的UV位置上。这里注意用Clamp把值做修改。
颜色方面,在基础色上与边缘颜色相加。而边缘颜色是通过对Mask Texture的绿色通道与Rim颜色相乘得到。
这里我也看不太明白,不知道这个Mask Texture是如何生成的。它的绿色通道就包含了所有边缘的信息。
如果我做的话,可能我会直接在PS中魔棒工具找到边界之后羽化选取。。。
但是不知道有没有什么牛掰的方法直接生成这个图?有知道的大神麻烦指点一下。
Node Attach
这个脚本用于把物体附着到Sprite Shape的特定点,然后每当Sprite Shape的曲线发生变化,物体也会随之位移。不过我看似乎只有一个树的这个脚本是激活的,其他基本都是disable的状态。貌似并没有起特别大的作用。
地面
在某个Grass上添加了Edge Collider作为地面
image.png
Rigidbody 2D
重新再读一下Rigidbody 2D的文档。
- Rigidbody2D override了Transform,所以我理解对于有RigidBody的物体,在移动的时候最好移动其Rigidbody而不是直接去操作Transform?
- 附加到同一个Rigidbody(或者它的子物体)的Collider2d都附着在同一个rigidbody上。这些collider自身之间不会碰撞。它们随Rigidbody一起移动。
- Rigidbody只是把物体纳入物理体系,让它可以接受力。碰撞体产生碰撞,没有碰撞体的rigidbody不会产生碰撞。
- Dynamic Rigidbody
- 这是最常用的,也最消耗资源。
- 不要直接去改变它的transform,而应该用力或者碰撞来操控
- 运动学刚体
- 运动学刚体不受力的影响,通常用来控制物体运行。用MovePosition和MoveRotation来控制运动。
- 运动学刚体消耗资源更少。
- 运动学刚体仍然可以用速度控制
- 它只跟Dynamic刚体发生碰撞,不与其他静态或者运动学刚体碰撞。
- 当碰撞时,它不会被撞动。类似于Static。
- 如果激活Use Full Kinematic Contacts选项,那么它可以和其他类型的刚体碰撞(static和Dynamic和运动学),表现起来像Dynamic,只是它不会被撞动。如果不用这个,它只会和Dynamic碰撞,对于其他的来讲,OnCollisionEnter等callback不会触发。(与Static相撞时,trigger collider是个例外)
- 静态刚体
- 撞不动。消耗资源最少。
- 只有Collider2D的物体默认有一个隐藏的静态刚体。
- 移动一组Collider2D会消耗很多性能,把它们附着到一个显式的静态刚体,在移动的时候或者重新配置的时候性能会比较好。
- Simulated属性,应该用这个属性来启用/禁用刚体,性能优于enable/disabled