繁体   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