枪不会缩小

时间:2015-01-01 14:01:43

标签: unity3d

我的武器缩放脚本有问题。我已经被困在这几个小时了。我已经访问了很多网站,希望能解决我的问题,但无济于事!

我认为这个问题与Unity无关,而是与我的脚本有关。当我放大(保持右键单击)时,代码完全正常,但是当我释放右键并且动画播放完毕后,代码不会缩小。它一直在放大!动画结束后我右键单击,武器会一直放大。

zoomIn()函数工作正常,但在zoomOut()函数期间,喷枪不会缩小。我知道zoomOut()函数工作正常,因为相机的FOV重置回原来的状态(60),但动画没有倒带(可能是因为它停止了?)。我试过改变动画的时间,改变它的速度和倒带以及许多其他的东西。如果我完全放大并再次放大(我在动画播放结束后右键单击),则枪会跳回原位并再次播放缩放动画。

脚本对我来说非常有意义,所以我不知道发生了什么或者如何修复它!

以下是我的代码:

 #pragma strict

 var arms : GameObject;
 var zoomed : boolean = false;

 function Update () {
     if (Input.GetMouseButton(1) && zoomed == false) {
         zoomIn();
     }
     if (!Input.GetMouseButton(1)) {
         zoomOut();
     }
 }

 function zoomIn() {
     if (Input.GetMouseButton(1)) {
         animation.Play("zoom");
         camera.main.fieldOfView = 50;
         arms.active = false;
         yield WaitForSeconds(0.3);
         zoomed = true;
     }
 }

 function zoomOut() {
     zoomed = false;
     if (zoomed == false) {
         animation.Rewind("zoom");
         camera.main.fieldOfView = 60;
         arms.active = true;
     }
 }

请帮忙

提前致谢

1 个答案:

答案 0 :(得分:0)

您正在尝试使用 Animation.Rewind 。这只会倒回动画,但不会(AFAIK)反向播放动画

试试这个。

用下面的

替换你的zoomIn()和zoomOut()方法
function zoomIn() {
    //A speed of 1 means that the animation will play at 1x in the positive timeline
    animation["zoom"].speed = 1;
    //Set the time to the FIRST key frame.
    animation["zoom"].time = 0;
    animation.Play("zoom");
    camera.main.fieldOfView = 50;
    arms.active = false;
    yield WaitForSeconds(0.3);
    zoomed = true;
}

function zoomOut() {
    zoomed = false;
    //A speed of -1 means that the animation will play the animation at 1x speed in reverse
    animation["zoom"].speed = -1;
    //Set the time to the LAST key frame. Replace the number "10" with the time of your last keyframe
    animation["zoom"].time = 10;
    animation.Play("zoom");
    camera.main.fieldOfView = 60;
    arms.active = true;
 }