首页 > 解决方案 > 如何将一个对象“平滑”地移离另一个对象?

问题描述

我的游戏是一个基本的绳索摆动游戏,我让 ObjectA(墙)远离 ObjectB(从绳子上摆动的球),然后当 ObjectB 不再处于触发器中时,ObjectA 移回其原始位置。当 ObjectA 移回其原始位置时,它像黄油一样光滑,但是当被 ObjectB 推开时,它会变得不稳定,尤其是在高速时(但我需要它高速移动,请参阅下面的代码以了解)。需要明确的是,我的代码完全可以运行,只是我正在寻找一个鬼鬼祟祟的技巧或技巧来帮助消除“推开”效果,就像它返回到 BaseWallPosition 时的情况一样。

void Update() {
         if (BallInTrigger) {
             target.position = Vector2.MoveTowards(target.position, new Vector2(transform.position.x, BaseWallPosition.y), -1 * rb.velocity.magnitude * Time.deltaTime);
         }
         else {
             target.position = Vector3.MoveTowards(target.position, BaseWallPosition, WallMoveSpeed * Time.deltaTime);
         }
     }

     void OnTriggerStay2D(Collider2D col) {
         if (col.tag == "Wall") {
             BallInTrigger = true;
         }    
     }

这段代码显然还有很多内容,但这是问题的重要内容

标签: unity3dunity3d-2dtools

解决方案


推荐阅读