制作子弹痕迹(到shareMaterial)-Unity

本文将利用Texture2D的自身的方法在Unity中实现子弹痕迹的效果

一、首先在网上down两张贴图(然后将弹痕背景透明化):

1、墙

2、弹痕




二、将贴图导入Unity并修改参数

1、保存可读可写


2、格式要对


三、在一个面片上挂载文章后面的脚本

1、如果不用for循环而用注掉的方法效果是这样的

2、而我们需要的是这样的

四、问题来了

实验表明,如果弹孔重叠,效果不好,像这样(暂时还没有好办法,欢迎指点!)



原码如下:

using UnityEngine;


public class bulletHole : MonoBehaviour
{
    private Renderer m_Renderer;
    private RaycastHit hit;
    public Texture2D bolt;
    void Awake()
    {
        //获取到渲染组件
        m_Renderer = GetComponent<Renderer>();
    }
    void Update()
    {
        if (!Input.GetMouseButton(0)) return;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
        {

            Texture2D texture = (Texture2D)m_Renderer.material.mainTexture;
            Vector2 point = hit.textureCoord;
            point.x *= texture.width;
            point.y *= texture.height;

            //texture.SetPixels((int)point.x, (int)point.y, bolt.width, bolt.height, bolt.GetPixels());

            for (int i = 0; i < bolt.width; i++)
            {
                for (int j = 0; j < bolt.height; j++)
                {
                    Color c = bolt.GetPixel(i, j);
                    if (c.a >= 0.2f)
                    {
                        texture.SetPixel((int)point.x + i, (int)point.y + j, c);
                    }
                }
            }
            texture.Apply();

        }

}

发布了32 篇原创文章 · 获赞 12 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章