gpt4 book ai didi

c# - 如何使 Sprite 颜色取决于 HP 变量? (hp 越少,红色 Sprite 应该越多)

转载 作者:行者123 更新时间:2023-12-05 05:36:43 27 4
gpt4 key购买 nike

hierarchy

我有一个包含 img 对象的 ShootingEnemy 对象(它上面有一个 SpriteRenderer)。射击敌人可以用玩家的子弹射击敌人。我希望它在 HP 水平下降时变得越来越红。这意味着当 HP 为 5 时,对象具有其标准的 Sprite 颜色,当 HP 为 4 时,颜色有点红色,而当其 1 颜色时几乎完全是红色我试过这段代码(在 ShootingEnemy 对象上):

void Awake() {
bullet = Resources.Load<Bullet>("Bullet");
rb = FindObjectOfType<Hero>().GetComponent<Rigidbody2D>();
sprite = GetComponentInChildren<SpriteRenderer>();
}
void Update() {
sprite.color = new Color(255, 255f/5*hp, 255f/5*hp);
}

甚至尝试将脚本添加到 img 对象上:

public class ShootingEnemyChild : MonoBehaviour
{
private int hp;
private SpriteRenderer sprite;
private ShootingEnemy parent;
void Start()
{
sprite = GetComponent<SpriteRenderer>();
parent = transform.parent.gameObject.GetComponent<ShootingEnemy>();

}

// Update is called once per frame
void Update()
{
hp = parent.hp;
sprite.color = new Color(255, (255/5)*hp, (255/5)*hp);
}
}

看起来对象的动画并没有让它改变它的颜色(可能,还没有真正检查过)。当我尝试在开始游戏前自己更改颜色时,它仍然更改为自然状态,当我开始游戏并在暂停时更改颜色时发生了同样的事情。

这个想法是否可以实现?如果是,我该如何将其应用到我的游戏中?

最佳答案

Color接受参数,它们是 01

范围内的浮点值
sprite.color = new Color(1f, hp / 5f, hp / 5f);

更好的方法如下:

sprite.color = Color.Lerp(Color.red, Color.green, hp / 5f);

关于c# - 如何使 Sprite 颜色取决于 HP 变量? (hp 越少,红色 Sprite 应该越多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73263238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com