Unity弹痕制作

Unity弹痕制作,做射击类游戏时,当子弹击中墙壁时,需要在墙上显示出来弹痕效果,在此将官网提供的一种方法实现一下。

主要思路:

第一:获取子弹击中位置

第二:转换击中位置为墙体材质UV贴图上的坐标

第三:将UV贴图上某一坐标(子弹击中位位置)的像素点颜色设置为我们需要的颜色如黑色,灰色等


做法如下

一、从网上随便找一张墙壁的图片,下载下来,拖到Unity项目中,然后点击图片按照下面红色框框里边设置如下




二、创建一个Plane,一个Material,将Material拖拽到Plane上,然后将上一步设置的图片拖拽到材质上






三、创建脚本 TTTT,代码如下

using UnityEngine;
using System.Collections;

public class TTTT : MonoBehaviour {

    Renderer renderer;
    MeshCollider meshCollider;
    RaycastHit hit;
    void Update()
    {
        if (!Input.GetMouseButton(0))
            return;
        //从摄像机向鼠标点击位置发射一条射线
        if (Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit))
        {
            //如果射线碰撞到带有 Collider的模型获取渲染器和被击中模型的 MeshCollider
            renderer = hit.collider.renderer;
            meshCollider = hit.collider as MeshCollider;
        }
        //如果 renderer 或者 MeshCollider为空,退出(注:需要设置的模型必须挂有 MeshRenderer组件和 MeshCollider 组件)
        if (renderer == null || renderer.sharedMaterial == null || renderer.sharedMaterial.mainTexture == null || meshCollider == null)
            return;
        //获取击中模型材质的贴图
        Texture2D tex = (Texture2D)renderer.material.mainTexture;
        //获取射线击中点在模型材质UV贴图上的坐标比例,x,y范围为 (0 - 1)
        Vector2 pixelUV = hit.textureCoord;
        Debug.Log("x  " + pixelUV.x + "      y   " + pixelUV.y);
        //比例乘以 图片宽高后得到击中点在UV贴图上的实际位置
        pixelUV.x *= tex.width;
        pixelUV.y *= tex.height;
        //设置UV贴图上某一点的像素颜色,参数 1 x坐标,参数 2 y坐标,参数 3 颜色
        tex.SetPixel((int)pixelUV.x, (int)pixelUV.y, Color.black);
        //设置完成保存贴图
        tex.Apply(); 
    }
}


将脚本拖拽到场景中的一个物体上即可,运行,随意点击Plane,在点击位置即变成 一个个黑色小点点,(此处设置的为一个像素点大小的点,可能太小,根据需要自己绘制范围)


运行如下
































  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值