Unity3D:iTween oncomplete不工作

时间:2015-09-15 06:25:41

标签: c# unity3d itween

我正在开发Unity2游戏,我希望在iTween动画结束时让Boom消失。

以下是代码的一部分

void OnMouseDown() {    

    if (ChosePosition == false)
        ChosePosition = true;

    // make Star stop
    else if (ChosePosition == true && ChoseForce == false) {
        ChoseForce = true;
        //Compute Force power 
        PowerDegree = Mathf.Abs (Star.transform.position.y - StarPosition)/ Mathf.Abs(StarendPosition - StarPosition) * 100;

        //print (PowerDegree);

        Vector3 NewBoomPostion = new Vector3 (Luncher.transform.position.x, BoomPosition, 85);

        GameObject newBoom = Instantiate(Boom, NewBoomPostion , Quaternion.identity) as GameObject;
        iTween.MoveTo (newBoom, iTween.Hash 
            ("y",BoomPosition+((BoomendPosition-BoomPosition)/100*PowerDegree),
            "speed",Boomspeed,
            "EaseType",BoomeaseType,
            "LoopType",BoomloopType,
            "oncomplete","BoomComplete"
            ));


        CarrierReset = true;
        ChosePosition  = false;
        ChoseForce = false;

        //After Shot, Luncher will move
        iTween.Resume(Luncher);

        //After Shot, Luncher Carrier will display
        displayCarrierOrNot = true;
    }
}


void BoomComplete(){
    print("complete");
}

但我无法在控制台中看到“完整”。

1 个答案:

答案 0 :(得分:4)

Unity Answers上的

This post描述了您遇到问题的原因:

  

默认情况下,iTween会尝试调用您在其动画对象上提供的回调方法 - 在您的情况下为mainCamera.gameObject。由于“onCameraShakeComplete”不驻留在该对象上,因此永远不会被调用。您有两种选择:将该方法移至mainCamera.gameObject或仅提供onCompleteTarget的“gameObject”,告诉iTween使用设置此iTween的GameObject。

在您的情况下,它动画的对象是newBoom,但您在自己的组件上有回调。要使iTween使用您当前的回调,您可以在Hash来电中添加参数:

iTween.MoveTo (newBoom, iTween.Hash(
    // ...
    "oncomplete", "BoomComplete",
    "oncompletetarget", gameObject
    ));