You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2D技术问询:受击后用红色效果展示角色剩余生命值

角色受击变红与生命值关联的Sprite Mask实现问题
  • 需求目标:实现敌人/玩家受击后暂时变红的效果,具体是受击时通过红色效果向上收缩的方式直观显示剩余生命值(生命值越低,红色可见区域越小)
  • 已尝试的Sprite Mask方案:
    • 准备两个Sprite:
      • Sprite 1:正常角色精灵,设置为不与Sprite Mask交互
      • Sprite 2:Sprite 1的红色修改版,设置为仅在Sprite Mask范围内可见
    • 使用矩形Sprite Mask,计划通过调整其Y轴位置和缩放值来关联剩余生命值,随生命值减少改变参数
  • 当前遇到的问题:
    1. 无法正确完成生命值到Sprite Mask的Y轴位置、缩放值的转换逻辑,红色区域的显示不符合预期
    2. 红色Sprite(Sprite 2)会跟随角色动画播放同步显示,虽不影响基本功能,但不符合预期
  • 目前使用的代码:
IEnumerator TakeDamageCorountine(int damage){
    currentHealth = currentHealth - damage;
    float maskPosY = 3.25f/currentHealth;
    float maskScaleY = 6.9f/currentHealth;
    if(gameObject.activeInHierarchy == true){
        spriteMask.localPosition = new Vector3(0.051f, maskPosY, 0f);
        spriteMask.localScale = new Vector3(8.884337f, maskScaleY, 1);
        print("Position: " + spriteMask.position + "Scale: " + spriteMask.localScale);
    }
    yield return new WaitForSeconds(.75f);
}

内容的提问来源于stack exchange,提问作者freakingrex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:33:15