hierarchy

我有一个ShootingEnemy对象,其中包括img个对象(它上面有一个SpriteRenders).射击敌人可以通过用玩家的子弹射击而受到伤害.我希望一旦它的HP水平下降,它就会变得越来越红.这意味着当HP为5时,物体有其标准的精灵 colored颜色 ,当HP为4时,物体的 colored颜色 是有点红的,当它的1 colored颜色 几乎是完全红色的时候 我try 了这个代码(在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);
}

甚至还try 在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);
    }
}

对象的动画似乎不允许它更改其 colored颜色 (可能,还没有实际判断).当我在开始游戏前try 自己改变 colored颜色 时,它仍然改变到了它的自然状态,同样的事情发生在我开始游戏并在暂停时改变 colored颜色 的时候.

这个 idea 有可能实现吗?如果是,我如何将其应用到我的游戏中?

推荐答案

Color接受参数,这些参数是介于01之间的浮点值

sprite.color = new Color(1f, hp / 5f, hp / 5f);

更好的方法是这样做:

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

Csharp相关问答推荐

EF Core 8—应用客户端投影后无法转换集操作

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

. NET 8使用COM向VB6公开

EF Core在请求列表时忽略列,但在按ID获取时包含

System.Text.Json数据化的C#类映射

如何修改中间件或其注册以正确使用作用域服务?

实体核心框架--HasColumnType和HasPrecision有什么不同?

使用带有WithAppOnly()请求选项的pageIterator

Unix上的.NET(核心):.NET意外地未看到通过P/Invoke系统调用对环境变量进行的进程内修改

我如何让我的秒表保持运行场景而不重置

使用Dapper映射联接查询对象数据到使用SplitOn;

自定义列表按字符串的部分排序

为什么方法的值在SELECT方法中不会更改?

使用CollectionView时在.NET Maui中显示数据时出现问题

源代码生成器:CS8795分部方法';Class1.GetS2(字符串)';必须有实现部分,因为它有可访问性修饰符?

ReadOnlyMemory访问基础索引的替代方案

WPF如何获取有关从一个视图模型更改另一个视图模型的信息

如何使用LINQ在C#中填充列表列表?

当要删除的子模型没有父模型的1:多属性时,如何告诉实体框架设置1:1 FK条目?

将带有嵌套If-Else的Foreach循环转换为Linq表达式