unity 实战图片挖洞Mask(转载)

转载转载

https://www.cnblogs.com/j349900963/p/8340571.html

截取里面俩代码,可以实现图片挖洞的需求

注意:

hole image 需要 将图片的透明度调整为1

public class Hole : Mask
{
    public override bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
    {
        if (!isActiveAndEnabled)
            return true;
 
        return !RectTransformUtility.RectangleContainsScreenPoint(rectTransform, sp, eventCamera);
    }
}

  

public class HoleImage : Image {
    public override Material GetModifiedMaterial(Material baseMaterial)
    {
        var toUse = baseMaterial;
 
        if (m_ShouldRecalculateStencil)
        {
            var rootCanvas = MaskUtilities.FindRootSortOverrideCanvas(transform);
            m_StencilValue = maskable ? MaskUtilities.GetStencilDepth(transform, rootCanvas) : 0;
            m_ShouldRecalculateStencil = false;
        }
 
        // if we have a enabled Mask component then it will
        // generate the mask material. This is an optimisation
        // it adds some coupling between components though :(
        Mask maskComponent = GetComponent<Mask>();
        if (m_StencilValue > 0 && (maskComponent == null || !maskComponent.IsActive()))
        {
            var maskMat = StencilMaterial.Add(toUse, (1 << m_StencilValue) - 1, StencilOp.Keep, CompareFunction.NotEqual, ColorWriteMask.All, (1 << m_StencilValue) - 1, 0);
            StencilMaterial.Remove(m_MaskMaterial);
            m_MaskMaterial = maskMat;
            toUse = m_MaskMaterial;
        }
        return toUse;
    }
}

 

转载于:https://www.cnblogs.com/leilei-weapon/p/10415274.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity物理是指在Unity游戏引擎中,通过使用物理引擎来实现角色或物体在地面上的效果。 在Unity物理中,通常使用的是物理引擎组件,如Mesh Collider和Rigidbody。首先,我们需要给需要的地面添加Mesh Collider组件,这样地面就具备了物理碰撞功能。然后,给的工具(例如玩家手中的镐子)添加Rigidbody组件,以便让工具受到物理引擎的影响。 接下来,我们可以使用Raycast或者Collider.Raycast来检测的位置。当工具与地面发生碰撞时,我们可以通过修改地面的网格顶点来模拟的效果。具体地,我们可以根据工具的位置和半径,找到所有在工具半径内的顶点,并将它们的高度调整为地面下沉的深度值。 为了实现连续的效果,我们可以在每次前将新的地面拷贝一份,并在新的地面上进行操作。这样,我们就可以实现实时更新地面和连续的效果。 需要注意的是,Unity物理需要合理设置物理材质、碰撞体积和刚体参数,以达到符合游戏设计的物理表现效果。此外,操作也可能会对游戏性能造成一定影响,因此在实现功能时需要进行适当的优化。 总的来说,Unity物理是利用物理引擎和碰撞检测技术实现的一种在游戏中让角色或物体能够实时掘地面的效果,通过调整地面网格顶点的位置来模拟的视觉效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值