0

我在 Unity 中制作了一个果冻软体,我试图让它更有弹性(这样当一个物体落在它上面后,它会反弹到比正常情况更高的空气中),但我似乎无法弄清楚如何做。我试图改变要反弹的物体的每一个方面以及我能找到的果冻本身,例如弹簧关节频率和软体的刚体组件,但没有什么能让它从果冻中反弹得更多。我遵循了本教程:https ://www.youtube.com/watch?v=3avaX00MhYc但制作了一个中心骨骼,而不是使用对面的骨骼。以下是一些不同方面的屏幕截图:https : //imgur.com/a/KBuvRPk 过去一周这一直困扰着我,所以我会很感激任何想法。

4

1 回答 1

0

我已经想通了,事实证明我只需要向对象添加力以使 OnCollisionExit 与软体反弹,并使用对象向下 OnCollisionEnter 向软体骨骼添加力,以便它仍然保持效果。如果其他人想在他们的游戏中实现这样的东西,这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class jellyBounce : MonoBehaviour
{
    public int speedBounce = 500;
    public int speedInward = 500;

     void OnCollisionEnter2D(Collision2D other)
     {
         if (other.gameObject.tag == "BounceMe")
         {
             speedInward = 300;
             gameObject.GetComponent<Rigidbody2D>  ().AddForce(Vector2.down*speedInward);
         }
         else if (other.gameObject.tag == "AlreadyBouncy")
         {
             speedInward = 50;
             gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.down*speedInward);
         }

     }

     void OnCollisionExit2D(Collision2D other)
     {
         if (other.gameObject.tag == "BounceMe")
         {
             speedBounce = 600;
             other.gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.up*speedBounce);
         }
         else if (other.gameObject.tag == "AlreadyBouncy")
         {
             speedBounce = 100;
             other.gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.up*speedBounce);
         }

     }
}
于 2021-07-28T00:51:01.187 回答