定时器没有改变精灵
Timer is not changing the sprite
我目前正在开发一款带有精灵效果的游戏。玩家可以在一定时间内更改 "Iceblade"。 2 秒后,我希望效果恢复正常 "Iceblade"。因此,我需要 Unity 中的计时器。我尝试了很长时间,但无法完全完成这项工作。
这是我的示例代码:
if (other.gameObject.CompareTag("IcePickup"))
{
Destroy(other.gameObject);
timer -= Time.deltaTime;
timer ++;
Blade1 = GameObject.Find("Blade1");
Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade;
if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade)
{
//i put a timer here but i cant figure out why is isnt working and print isnt showing.
if (timer > 2)
{
Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = BladeNormal;
print("working");
}
}
}
检查它们是否相等你应该这样写
if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite == IceBlade)
和
timer -= Time.deltaTime;
仅在 other.gameObject.CompareTag("IcePickup")
为真时发生一次
这里
timer -= Time.deltaTime;
timer ++;
您在增加计时器值的同时减少了它
所以这显然不是计时器。做一个计时器 timer -= Time.deltaTime;
必须在 Update
中调用才能计数,也可以使用 coroutines
,here and here 是两种方式的实现
我目前正在开发一款带有精灵效果的游戏。玩家可以在一定时间内更改 "Iceblade"。 2 秒后,我希望效果恢复正常 "Iceblade"。因此,我需要 Unity 中的计时器。我尝试了很长时间,但无法完全完成这项工作。
这是我的示例代码:
if (other.gameObject.CompareTag("IcePickup"))
{
Destroy(other.gameObject);
timer -= Time.deltaTime;
timer ++;
Blade1 = GameObject.Find("Blade1");
Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade;
if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade)
{
//i put a timer here but i cant figure out why is isnt working and print isnt showing.
if (timer > 2)
{
Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = BladeNormal;
print("working");
}
}
}
检查它们是否相等你应该这样写
if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite == IceBlade)
和
timer -= Time.deltaTime;
仅在 other.gameObject.CompareTag("IcePickup")
为真时发生一次
这里
timer -= Time.deltaTime;
timer ++;
您在增加计时器值的同时减少了它
所以这显然不是计时器。做一个计时器 timer -= Time.deltaTime;
必须在 Update
中调用才能计数,也可以使用 coroutines
,here and here 是两种方式的实现