Skip to content

射击游戏测试,注重游戏设计和Shader学习

Notifications You must be signed in to change notification settings

ZeroChiLi/ShootingGame

Repository files navigation

ShootingGame

  • 射击游戏练习,注重游戏设计和Shader特效

操作

  • 移动:左右方向键
  • 冲刺:左Shift键
  • 跳跃:空格键
  • 射击:X键

游戏设计

  • Doc/30个让游戏更有感觉的小技巧.md

待做

  • 跟踪弹
  • 连锁闪电
  • 尸体持续流血

Shader

  • 人物受击白光

    • 原理:渲染多一遍角色(Graphics.DrawMesh),只渲染指定颜色
    • 文件:"Assets/Shader/OnlyColor.shader"; "Assets/Scripts/Effect/ColorEffect.cs"
  • 尸体(子弹壳)消融

  • 震荡波动(子弹碰撞)

    • 原理:球体通过GrabPass获取屏幕纹理,读uv时,加上球体法线外扩,噪声纹理偏移;缩放,透明
    • 文件:"Assets/Shader/BlastWaveEffect.shader"; "Assets/Scripts/Effect/GoEffect/GoBlastWaveEffect.cs"
  • 震荡波动2D(开枪火花)

    • 原理:读纹理,偏移GrabPass
    • 文件:"Assets/Shader/BlastWave2DEffect.shader";
  • 遮挡高亮(敌人被墙体挡住)

    • 原理:多渲染一次,不写入深度就好了
    • 文件:"Assets/Shader/OcclusionHighLight.shader";
  • 遮挡消融(玩家被墙体挡住)

  • 残影(冲刺幻影)

    • 原理:用CombineInstance合并所有子网格,每次更新设置一下转换矩阵调整位置,然后调用DrawMesh渲染这个网格。
    • 文件:"Assets/Scripts/Effect/GoEffect/GoGhostEffect.cs"
  • 能量护盾(敌人概率自爆冲击波)

    • 参考:https://zhuanlan.zhihu.com/p/35922906
    • 原理:边缘高亮,相交高亮(计算场景深度 和 自身坐标深度比较 如果相近 说明接近相交处)
    • 文件:"Assets/Shader/TransparentShield.shader"
  • 击中弹痕

    • 参考:Unity官方粒子特效Demo
    • 原理:射线命中点创建贴花特效,设置朝向为命中点法线方向。
  • 血迹贴花

  • 屏幕空间的环境光遮蔽 SSAO

    • 参考:https://blog.csdn.net/puppet_master/article/details/82929708
    • 原理:
      1. 采样点的半球范围内随机采样点(正态分布),采样点转到屏幕空间,计算当前深度和采样点深度,如果多数采样点深度大于自己的点,说明该点遮蔽多。
      2. 注意深度相差大于半径的时候,就不算遮蔽,应该是处于边缘。
      3. 双边滤波高斯模糊,高斯模糊的核 + 法线差别大的保留细节。用来保留细节同时又高斯模糊处理遮蔽颜色。
    • 文件:"Assets/Shader/ScreenSpaceAOEffect.shader"

待做

About

射击游戏测试,注重游戏设计和Shader学习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published