Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何将一个精灵更改为另一个精灵,然后在1秒后返回_Unity3d_2d_Sprite_Unity3d 2dtools - Fatal编程技术网

Unity3d 如何将一个精灵更改为另一个精灵,然后在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

我正在Unity2D中开发一个简单的游戏,其中有几个怪物吃被拖到他们身上的东西。如果正确的物体被拖到怪物身上,分数会上升1,怪物会做出一张快乐的脸,否则,分数会下降并做出一张悲伤的脸。这是我使用的代码(不包括快乐/悲伤的转换):

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();
    }
}