/// 脚本挂载到墙上

///

public class ImageFusion : MonoBehaviour {

public Texture2D bulletTexture; // 【图片】弹痕

private Texture2D wallTexture; // 【图片】墙

private Texture2D NewWallTexture; // 【图片】墙的备份

private float wall_height; // 【获取墙和弹痕图片的宽高信息】

private float wall_width;

private float bullet_height;

private float bullet_width;

RaycastHit hit; // 获取子弹打击点

private Queue uiQueues; // 存储像素点信息

// Use this for initialization

void Start () {

uiQueues = new Queue ();

wallTexture = GetComponent ().material.mainTexture as Texture2D;

// 【备份墙的图片】

NewWallTexture = Instantiate (wallTexture);

GetComponent ().material.mainTexture = NewWallTexture;

wall_height = wallTexture.height;

wall_width = wallTexture.width;

bullet_height = bulletTexture.height;

bullet_width = bulletTexture.width;

Debug.Log (wall_width);

Debug.Log (bullet_width);

}

// Update is called once per frame

void Update () {

if (Input.GetMouseButtonDown(0)) {

Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

if (Physics.Raycast(ray,out hit)) {

if (hit.collider.name == "Plane") {

// 得到打击点的图片UV坐标

// UV坐标是当前图片宽高的百分比【左下角(0,0),右上角(1,1)】

Vector2 uv = hit.textureCoord;

uiQueues.Enqueue (uv);

for (int i = 0; i < bullet_width; i++) {

for (int j = 0; j < bullet_height; j++) {

// 先减去弹痕宽度的一半得到最左边的坐标,依次向右递增

float w = uv.x * wall_width - bullet_width / 2 + i;

// 同理,从下到上递增

float h = uv.y * wall_height - bullet_height / 2 + j;

Color wallColor = NewWallTexture.GetPixel ((int)w,(int)h);

Color bulletColor = bulletTexture.GetPixel (i,j);

// 修改弹痕位置的像素为两图的融合颜色,若不相乘融合会使用弹痕原图

NewWallTexture.SetPixel ((int)w,(int)h,wallColor * bulletColor);

}

}

// 应用图片

NewWallTexture.Apply ();

Invoke ("ReturnWall",3f);

}

}

}

}

void ReturnWall()

{

// 还原以打击点为原点的图片像素点

Vector2 uv = uiQueues.Dequeue ();

for (int i = 0; i < bullet_width; i++) {

for (int j = 0; j < bullet_height; j++) {

float w = uv.x * wall_width - bullet_width / 2 + i;

float h = uv.y * wall_height - bullet_height / 2 + j;

// 使用原图的像素进行还原

Color wallColor = wallTexture.GetPixel ((int)w,(int)h);

NewWallTexture.SetPixel ((int)w,wallColor);

}

}

NewWallTexture.Apply ();

}

}

unity 弹痕_Unity C# 用图片融合做弹孔相关推荐

  1. python实现浮雕效果的原理_python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)...

    原图 图像灰度处理 #方式1 import cv2 #读取彩色原图 img0=cv2.imread('E:/python_cv/01.jpg',1) #读取灰度图 img1=cv2.imread('E ...

  2. Unity添加可拉伸的图片

    创建 首先,把图片放到Assets目录下(可以是Assets下的子目录). 然后打开Unity,发现它非常敏捷的发现了图片,并在同一个生成了meta文件,但这我们不用关心,只要知道Unity发现了你的 ...

  3. 学习编程做笔记的软件_可以在图片上做笔记的软件

    做笔记是一个很好的工作和学习方式,通过做笔记,可以让我们记录下来自己接触到的知识,同时在记笔记的时候还可以引发更深刻的思考.在以前,大家提到笔记的时候,脑海里都是文字的形式,但是随着科技的发展,声音图 ...

  4. .net pdf转图片_PDF转图片怎么做?PDF一键转图片!

    在日常工作中,我们经常需要把文件资料传给其他人看.但如果文档是PDF格式的话,很可能他人的设备因缺少相应的阅读工具而无法打开.这时,最好的方法就是将PDF文件转换成图片!这样不管是在电脑还是在一些移动 ...

  5. (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放

    文章目录 一.前言 二.Animator状态机组织 三.过渡条件 四.用代码设置过渡条件,触发动画播放 五.CharacterAniLogic.cs完整代码 一.前言 文章列表 Unity游戏开发-- ...

  6. php微信公众号开发图片预览,微信公众号点亮图片怎么做

    微信公众号点亮图片怎么做? 微信公众号点亮图片的方法: 下面就为大家带来解答,只需要简单三步哦. 1.准备好两张图片,一张黑白,一张彩色的,在主编编辑器中,按图中所示,找到需要的样式,点击样式,进入编 ...

  7. python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)

    原图 图像灰度处理 #方式1 import cv2 #读取彩色原图 img0=cv2.imread('E:/python_cv/01.jpg',1) #读取灰度图 img1=cv2.imread('E ...

  8. Unity游戏开发——新发教你做游戏(三):3种资源加载方式

    文章目录 一.前言 二.Unity的目录结构规范 1.Resources(不是很推荐把资源放这个目录) 2.RawAssets(存放生资源) 3.GameRes(存放熟资源) 4.StreamingA ...

  9. php搞笑证件,摆摊证制作软件app 摆摊证搞笑图片怎么做

    抖音摆摊证怎么做?摆摊搞笑图片怎么做?相信大家的朋友圈最近都被一些摆摊证摆摊图片刷屏了,这种摆摊证摆摊图片的做法其实也非常简单,直接进入指定的网页加入你喜欢的文字进行生成就可以了哦.有需要的话就快来看 ...

  10. 在图片上做标签,图片可放大缩小

    最近有个功能需要标记出没张图里脸部,并且点击大图后,图片可以缩放,标记也会跟着移动.有点类似地图tag 眼见为实,先上一张效果图: 由于最近项目已经完成差不多,在这段时间里把觉得有质量的功能拿出来和小 ...

最新文章

  1. mysql与ms sql server_MS SQL Server和MySQL区别
  2. session多服务器共享的方案梳理
  3. c# Task.Factory.StartNew 传参数_C#/C++混合编程一二事
  4. 黑白两客进入页面(1)
  5. Android NDK 使用第三方静态库(转)
  6. 此人提出平行线可以相交遭嘲讽,郁郁而终,12年后却被认可
  7. TensorFlow 之快速上手详解
  8. pythotn基础篇——条件分支与循环--3
  9. 直通车点击软件测试自学,如何用直通车测出高点击好图
  10. 【Word】Word如何查找替换?Word查找替换大全 | Word通配符大全
  11. google Chrome 浏览器升级更新了来源策略,导致不同域名来源页面信息【Referer】只有域名信息
  12. 如何远程连接POSTGRESQL数据库
  13. C语言输出三位数的水仙花数
  14. 2017,知识与财富
  15. 【​观察】数据驱动零售变革 重塑消费体验是关键
  16. 为了数学的明天,,穿越时空,重返南大(III)-
  17. 常见元素 – p元素
  18. MySQL数据库管理系统原理
  19. 凡人修仙传之百炼冥门java_修仙缘:细说我与《凡人修仙传》的过往
  20. IOS小组件(4-2):创建可配置小组件(动态修改配置数据)

热门文章

  1. 宝宝泡药浴和直接吃药有什么区别吗?
  2. 上知天文,下知地理,还能替人写脚本!人工智能的进阶ChatGPT
  3. 各种语言常用壳的特征
  4. 新生报到小程序,微信小程序新生入学,微信小程序新生报到系统毕业设计作品
  5. RabbitMQ配置文件_修改RabbitMQ MQTT的1883端口
  6. linux常用指令pro,第二章:Linux常用基本命令及常用技巧
  7. Fibonacci Additions (区间加优化)
  8. Enscape for SketchUp 室外日夜景照明设置技巧
  9. ES6(十八)Module
  10. 基于python的图像灰度值处理(opencv)