0

私は Unity2 ゲームに取り組んでおり、アニメーションの最後で Boom を非表示にしたいと考えていiTweenます。

ここにコードの一部があります

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

しかし、コンソールに「完了」が表示されません。

4

1 に答える 1

6

Unity Answers のこの投稿では、問題が発生した理由について説明しています。

デフォルトでは、iTween は、アニメーション化しているオブジェクトで提供されたコールバック メソッドを呼び出そうとします。この場合はmainCamera.gameObject. " onCameraShakeComplete" はそのオブジェクトに存在しないため、呼び出されることはありません。2 つのオプションがあります。そのメソッドを自分のメソッドに移動するmainCamera.gameObjectか、単純に am " onCompleteTarget" ofgameObjectを指定して、この iTween を設定している GameObject を使用するよう iTween に指示します。

あなたの場合、アニメーション化しているオブジェクトはnewBoomですが、独自のコンポーネントにコールバックがあります。iTween に現在のコールバックを使用させるには、Hash呼び出しにパラメーターを追加できます。

iTween.MoveTo (newBoom, iTween.Hash(
    // ...
    "oncomplete", "BoomComplete",
    "oncompletetarget", gameObject
    ));
于 2015-09-15T06:44:20.797 に答える