Unity3d 如何将一个精灵更改为另一个精灵,然后在1秒后返回
我正在Unity2D中开发一个简单的游戏,其中有几个怪物吃被拖到他们身上的东西。如果正确的物体被拖到怪物身上,分数会上升1,怪物会做出一张快乐的脸,否则,分数会下降并做出一张悲伤的脸。这是我使用的代码(不包括快乐/悲伤的转换):Unity3d 如何将一个精灵更改为另一个精灵,然后在1秒后返回,unity3d,2d,sprite,unity3d-2dtools,Unity3d,2d,Sprite,Unity3d 2dtools,我正在Unity2D中开发一个简单的游戏,其中有几个怪物吃被拖到他们身上的东西。如果正确的物体被拖到怪物身上,分数会上升1,怪物会做出一张快乐的脸,否则,分数会下降并做出一张悲伤的脸。这是我使用的代码(不包括快乐/悲伤的转换): if(transform.name.Equals(“黄色”)){ if(collinfo.name.Equals(“塑料(克隆)”){ 调试日志(“+1”); audio.Play(); GameSetup.playerScore+=1; gs.GetComponent
if(transform.name.Equals(“黄色”)){
if(collinfo.name.Equals(“塑料(克隆)”){
调试日志(“+1”);
audio.Play();
GameSetup.playerScore+=1;
gs.GetComponent().removit(aux);
}
否则{
Debug.Log(“-1”);
audio.Play();
如果(GameSetup.playerScore==0)
{}
其他的
{
GameSetup.playerScore-=1;
}
gs.GetComponent().removit(aux);
}
播放的音频只是“咀嚼”的声音
我希望怪物将精灵更改为happyFace(通过GameObject.GetComponent().sprite=happyFace),等待一秒钟,然后切换回它的正常精灵,但不知道如何实现该等待时间
非常感谢所有的帮助。这可以通过几种方式实现,但是,我会使用一种返回IEnumerator的方法,如 这假设您的脚本中有一个变量,该变量引用了使用此脚本附加到游戏对象的SpriteEnder
SpriteRenderer sr = GetComponent <SpriteRenderer> ();
然后,您将使用适用的sprite作为变量调用此函数
if (happy)
StartCoroutine (ChangeFace (happyFaceSprite);
else
StartCoroutine (ChangeFace (sadFaceSprite);
因为ChangeFace方法返回一个IEnumerator,所以我们必须使用start例程函数调用该函数。该方法将一直运行,直到到达yield return new WaitForSeconds(1.0f)函数,然后等待1.0f秒,然后恢复到上次停止的位置
明白吗
注意
我没有测试过这个,但我不明白为什么它不起作用。在monster控制器中放入一个浮点变量,称它为
happyTimer
或其他什么。它应该从零开始
然后在Update
函数中,您应该检查happyTimer
是否高于零。如果高于零,则减去Time.deltaTime
并再次检查。如果第二次检查happyTimer
为零或更低,则调用重置精灵的函数
当您将精灵设置为“happy face”时,请同时设置happyTimer=1
。这将从下一次Update
调用开始倒计时
更新的相关部分如下所示:
if(happyTimer > 0) {
happyTimer -= Time.deltaTime;
if(happyTimer <= 0) {
resetSprite();
}
}
if(happyTimer>0){
happyTimer-=Time.deltaTime;
如果(快乐时光)
if (happy)
StartCoroutine (ChangeFace (happyFaceSprite);
else
StartCoroutine (ChangeFace (sadFaceSprite);
if(happyTimer > 0) {
happyTimer -= Time.deltaTime;
if(happyTimer <= 0) {
resetSprite();
}
}