制作弹痕主要用到粒子系统的贴图融合,通俗的说就是把墙壁的纹理和子弹的纹理融合在一起。实现这个效果需要知道:
1UV坐标,
//对UV坐标的理解:
//1.UV坐标就是图片在屏幕上像素点的位置,【相当于x、y坐标】
//2.范围一般是[0,1].左下角是(0.0),右上角是(1.1)。
//3.U坐标=第U个像素点/图片的宽;
V坐标=第V个像素点/图片的高;
2 要知道队列的知识 ,使用空间是using System.Collections.Generic;入队列和出队列。

这个代码的功能是实现在屏幕上点击任意位置,在Plane上出现弹痕,过3秒后消失。

消失的时候需要用到队列知识。Queue
每一步都有注释,慢慢写,慢慢看

//命名空间
using System.Collections.Generic;
public class konglian : MonoBehaviour
{public Texture2D m_oldWallTexture;Texture2D m_newWallTexture;public Texture2D m_bulletTexture;//定义纹理的高宽,float m_wallTextureWidth;float m_wallTextureHeight;float m_bulletTextureWidth;float m_bulletTextureHeight;//创建一个队列。注意他的命名空间。Queue <Vector2> qua = new Queue<Vector2> ();void Start (){m_oldWallTexture = GetComponent <MeshRenderer> ().material.mainTexture as Texture2D;//调用旧的纹理作为效果图   不然最后的图渲染完之后,不能更改。m_newWallTexture = Instantiate (m_oldWallTexture);//使用这个纹理  理解为壁纸  GetComponent <MeshRenderer> ().material.mainTexture = m_oldWallTexture;//获得墙和子弹贴图的宽度和高度m_wallTextureWidth = m_newWallTexture.width;m_wallTextureHeight = m_newWallTexture.height;m_bulletTextureWidth = m_bulletTexture.width;m_bulletTextureHeight = m_bulletTexture.height;}Ray m_ray;RaycastHit m_hit;void Update (){//屏幕发射射线if (Input.GetMouseButtonDown (0)) {m_ray = Camera.main.ScreenPointToRay (Input.mousePosition);if (Physics.Raycast (m_ray, out m_hit)) {if (m_hit.transform.name == "Plane") {Vector2 UV = m_hit.point;//把射击的位置入队列qua.Enqueue (UV);//找到子弹贴图的原点位置,进行融合   需要定义   UV的位置是射击到的位置,以他为中心。i  j是子弹的贴图大小。for (int i = 0; i < m_bulletTextureWidth; i++) {for (int j = 0; j < m_bulletTextureHeight; j++) {//注意i j是墙的整体像素的行和列,需要乘墙的宽度和高度  谁的坐标乘谁的。float w = (UV.x * m_wallTextureWidth - m_bulletTextureWidth / 2) + i;float h = (UV.y * m_wallTextureHeight - m_bulletTextureHeight / 2) + j;//获得像素,子弹在墙壁上的需要融合的位置,Color bulletPexis = m_bulletTexture.GetPixel (i, j);Color wallPexis = m_newWallTexture.GetPixel ((int)w, (int)h);//开始融合  像素之间相乘m_newWallTexture.SetPixel ((int)w, (int)h, wallPexis * bulletPexis);}}}//需要提交一下。融合完成后进行。m_newWallTexture.Apply ();Invoke("ReBack",3f);}}}
}

下面是让弹痕消失,原理一样,用旧的纹理,来补全有弹痕的纹理。

void ReBack (){//你想你射击,肯定是先射击出现的弹痕先消失,后出现的设计弹痕后消失,所以这里需要用到队列的知识。//取出第一个元素,并返回到UV,这个就是第一弹痕,需要让他消失,出队列。Vector2 UV = qua.Dequeue ();//同样的方法找到UV原点,得到子弹的像素点,只不过是和原来的贴图融合,for (int i = 0; i < m_bulletTextureWidth; i++) {for (int j = 0; j < m_bulletTextureHeight; j++) {float w = (UV.x * m_wallTextureWidth - m_bulletTextureWidth / 2) + i;float h = (UV.y * m_wallTextureHeight - m_bulletTextureHeight / 2) + j;//看清楚是旧的纹理,因为旧的没有修改过,读取,不能修改。Color wallPexis = m_oldWallTexture.GetPixel ((int)w, (int)h);显示的图是新修改的图。set方法。m_newWallTexture.SetPixel ((int)w, (int)h, wallPexis);}}//完成后记得提交m_newWallTexture.Apply ();}

同时 出现弹痕时提交的时候 ,调用ReBack方法,弹痕就会在3f。后消失。

Invoke(string name,float );
//方法是调用方法,几秒调用

如果有些错的地方欢迎大家指出来,共同指教。

我的Unity(5)一点一滴 利用贴图制作弹痕相关推荐

  1. 火焰效果材质实现_利用噪音图制作一个纸张燃烧的效果

    写在前面 前几天有人在群里问怎么制作一个纸张被火烧掉的效果,刚好那天没那么忙,就尝试实现了一个,效果如下: 这个shader并不复杂,主要是对噪音图的使用,趁这次机会和大家分享一下 基础材质 纸张本身 ...

  2. Android带三角形的弹窗,andriod开发 利用.9图制作带三角形指示的popwindow弹窗

    利用.9图做背景,配合使用popwindow和listview可以实现这个需求,也可以自定义popwindow的布局,画边框加阴影,自定义三角形的view,然后...然后我就放弃了这个思路,老老实实直 ...

  3. Unity中贴图制作备忘录

    Unity中贴图制作备忘录 软件准备 3DsMAX.Unity.PS 制作方法 1.打开3dsMAX,执行展UV操作 3dsMax中的展UV操作. 格式保存为JPG格式. 2.再用PS打开刚才制作的图 ...

  4. [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)

    非常实用呀 原文地址:你们要的GIF动图制作全攻略!看完就会做!(实操教程)作者:木木老贼 来源:文案匠(ID:sun-work) 作者:一木(授权转载,如需转载请联系文案匠) 文章配图的GIF动图怎 ...

  5. 游戏建模小白必看的游戏人物模型贴图制作方法及制作小技巧

    目前游戏行业快速发展,游戏对于现在的人来说,是不可缺少的,因为我们平时需要放松,我们的压力需要解放,所以有了游戏,游戏的发展是必须的,现在你说会被淘汰,我觉得是不可能,因为游戏的快速发展,现在关于游戏 ...

  6. 动态图册用HTML怎么制作,imgplay gif动图制作如何使用?imgplay图文使用教程

    imgplay是一款利用图片.视频就能轻松制作GIF的应用软件.通过这款软件,大家可以切身感受拍照片和视频时的精彩瞬间,下面小编就为大家讲解imgplay软件的使用方法. 推荐下载: 软件名称:img ...

  7. leap motion java小程序_Motionleap动图制作神器app

    Motionleap动图制作神器app是一款能够帮助用户更好地去编辑各种动图的软件,现在用户在聊天,或者是其他的社交过程中都喜欢发各种各样的动图来娱乐,想要自己拥有源源不断的动图,就可以利用这个软件来 ...

  8. 游戏建模初学者必看的游戏人物模型贴图制作方法及制作小技巧

    目前游戏行业快速发展,游戏对于现在的人来说,是不可缺少的,因为我们平时需要放松,我们的压力需要解放,所以有了游戏,游戏的发展是必须的,现在你说会被淘汰,我觉得是不可能,因为游戏的快速发展,现在关于游戏 ...

  9. 免装版_无缝贴图制作软件 PixPlant2中文免装版

    点击上方蓝字关注我们 如您喜欢我们的公众号,不妨推荐给身边的朋友 资源介绍: 资源来源于网络,很多时候我们从网上找的贴图并不是无缝的,而且一般都没有高光/法线 贴图这些,在材质的模拟上就要差了很多,在 ...

最新文章

  1. DBgrid 第一列加入CheckBox,点击列头 全选/全消
  2. IDEA使用从Eclipse过来的快捷键
  3. 常用html字符的转义字符串(html代码),全部转义字符备用
  4. java 解析 datatabe,在JAVA实现DataTable对象(一)
  5. pydev中使用wxpython找不到路径的问题
  6. ida模拟器调试_IDA pro远程调试折腾记
  7. linux系统支持什么格式的软件吗,UOS系统支持什么样的软件包格式:其实Deb,Rpm,Tar.gz源码包都行...
  8. ML for trading -cs7646-03
  9. 关于管理者应该拥有的的六十…
  10. U1C3 介绍SketchEngine和Web语料库研究
  11. 驱动程序安装全攻略1
  12. 国标GB28181协议视频平台EasyGBS国标级联到上级宇视平台,不断切换在线和离线状态是什么原因?
  13. earth orientation parameter(EOP)地球指向参数
  14. MC9S12XS128nbsp;16位PWMnbsp;电…
  15. 维谛(Vertiv)培训中心迁新址,再攀培训业务新高峰
  16. 用于学术论文阅读外文学习的高效翻译工具——多译
  17. 节日循环彩灯电路逻辑设计(使用74LS194二片)
  18. 物流云管理系统-免费版
  19. 制作三星I9088 刷机ROM的实践(四)
  20. YOLOv5+DeepSORT多目标跟踪与计数精讲(含行人计数和车辆计数)

热门文章

  1. MongoDB学习文档
  2. 老版启用aero_在Windows Vista中启用慢动作Aero动画
  3. 关于修改host的一点整理
  4. 安装Frida 16.0.10+雷电模拟器
  5. Jetson Xavier NX环境配置ubuntu20.04
  6. 服务器硬盘和外储硬盘接口,服务器硬盘和普通硬盘有什么区别?
  7. 数据库事务隔离级别有哪些?
  8. 十大排序--冒泡排序
  9. 记一次会员联通ERP开卡需求
  10. 写给23岁的自己-------June