簡體   English   中英

如何將我的GameObject移至所需位置?

[英]How to move my GameObject to desired position?

我的數學技能再次困擾我。 我正在為移動設備構建一個垂直平台游戲,其中角色會跳到平台上,試圖在避免危險的情況下盡可能高。 我進行了設置,以使相機不會移動,而是每次角色與平台之間發生碰撞時平台和角色都會向下移動。 我無法弄清楚如何將當前正在與之碰撞的平台以及玩家下移到主攝像機GameObject中Y軸上的-4.0的目標位置。 這是我必須將字符/平台下移到目標位置的代碼:

/*********************************** Update **********************************/

void Update(){
    if (platformMove == true) {
        PositionChanging ();

        StartCoroutine(WaitToMove());
    }

}

/******************** Platform Holder Position Changing **********************/

void PositionChanging(){
    Vector2 positionA = new Vector2 (platformHolder.transform.position.x, -4);

    newPosition = positionA;        

    platformHolder.transform.position = Vector2.Lerp(platformHolder.transform.position, newPosition, Time.deltaTime * smooth);
}

//************************ Collision Function ********************************/

void OnCollisionEnter2D(Collision2D coll)
    {
        foreach(ContactPoint2D contact in coll.contacts)
        {   
            platformMove = true;
            currentPlatformPosition = (coll.transform.position.y);

            }
        }
    }

//********************** Wait to Set platformMove to false *******************/

    IEnumerator WaitToMove(){
        yield return new WaitForSeconds(0.5f);
        platformMove = false;
    }

如您所見,我正在將當前碰撞位置分配給OnCollision2D函數中的currentPlatformPosition,但我還沒有做任何事情。 我很確定我應該在某個地方使用它! 我已經嘗試了上百萬種不同的方法,並獲得了幾次機會,但是我似乎無法確定這一點。

實例化平台后,將它們放置在Platform_Holder GameObject內部。 我的主要角色也在其中,因此當我重新放置Platform_Holder時,他隨平台一起移動。

在此處輸入圖片說明

這是一個視覺表示:

在此處輸入圖片說明

void Update(){
    if (platformMove == true) {
        PositionChanging ();
    }

}

void PositionChanging(){
    StartCoroutine(WaitToMove());
    Vector2 positionA = new Vector2 (platformHolder.transform.position.x, platformHolder.transform.position.y - 4);

    newPosition = positionA;        

    platformHolder.transform.position = Vector2.Lerp(platformHolder.transform.position, newPosition, Time.deltaTime * smooth);
}

void OnCollisionEnter2D(Collision2D coll)
    {
        foreach(ContactPoint2D contact in coll.contacts)
        {   
            platformMove = true;
            currentPlatformPosition = (coll.transform.position.y);
        }
    }
    IEnumerator WaitToMove(){
        yield return new WaitForSeconds(0.5f);
        platformMove = false;
    }

我做了什么:1)將例行調用移到方法中,並移至循環外部,以免平台移動時不被連續調用2)將硬-4更改為實際y位置減去4 3)刪除了多余的括號(意外?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM