制作子弹痕迹(到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();

        }

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值