如何在 Unity 2D 中制作软体弹跳器?
Posted
技术标签:
【中文标题】如何在 Unity 2D 中制作软体弹跳器?【英文标题】:How to make a softbody bouncier in Unity 2D? 【发布时间】:2021-10-03 11:51:25 【问题描述】:我在 Unity 中制作了一个果冻软体,我试图让它更有弹性(这样当一个物体落在它上面后,它会反弹到比正常情况更高的空气中),但我似乎不知道出来怎么做。我试图改变要反弹的物体的每一个方面以及我能找到的果冻本身,例如弹簧关节频率和软体的刚体组件,但没有什么能让它从果冻中反弹得更多。我遵循了本教程:https://www.youtube.com/watch?v=3avaX00MhYc,但制作了一个中心骨骼,而不是使用对面的骨骼。下面是一些不同方面的截图:https://imgur.com/a/KBuvRPk 过去一周这一直困扰着我,所以我会很感激任何想法。
【问题讨论】:
您是否尝试过使用物理材料? Physics Material 3dPhysics Material 2d @hijinxbassist 是的,没有任何改变。发生的情况是当一个对象与软体交互时,它会下沉一点然后反弹回来,但我想增加它下沉并反弹回来的量,我不知道该怎么做。 【参考方案1】:我已经想通了,结果我只需要向对象添加力以使 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);
【讨论】:
以上是关于如何在 Unity 2D 中制作软体弹跳器?的主要内容,如果未能解决你的问题,请参考以下文章