Unity3d 2D在保持稳定的情况下双向通过平台
在C#中,有人能帮我为2D platformer游戏创建一个平台,让我可以从平台上跳起来,从平台上摔下来,然后作为稳定的陆地站在平台上吗?我环顾四周,似乎找不到任何有助于解决问题的方法。如果你的游戏非常简单(比如你的平台是平的),当玩家在平台下方时,你可以很容易地禁用对撞机 如果需要其他对象保持站在平台上,可以使用以下两种方法控制碰撞矩阵:和 将此部件连接到每个平台:Unity3d 2D在保持稳定的情况下双向通过平台,unity3d,2d,Unity3d,2d,在C#中,有人能帮我为2D platformer游戏创建一个平台,让我可以从平台上跳起来,从平台上摔下来,然后作为稳定的陆地站在平台上吗?我环顾四周,似乎找不到任何有助于解决问题的方法。如果你的游戏非常简单(比如你的平台是平的),当玩家在平台下方时,你可以很容易地禁用对撞机 如果需要其他对象保持站在平台上,可以使用以下两种方法控制碰撞矩阵:和 将此部件连接到每个平台: [RequireComponent(typeof(Collider))] public class ColliderActiva
[RequireComponent(typeof(Collider))]
public class ColliderActivator : MonoBehaviour
{
public GameObject player;
new Collider collider;
Collider playerCollider;
void Awake()
{
collider = GetComponent<Collider>();
playerCollider = player.GetComponent<Collider>();
}
bool wasPlayerAbove = false;
void Update()
{
bool isPlayerAbove = player.transform.position.y - transform.position.y >= 0;
// This check is only to reduce calls to the physics system
if(wasPlayerAbove != isPlayerAbove){
wasPlayerAbove = isPlayerAbove;
Physics.IgnoreCollision(collider, playerCollider, !isPlayerAbove);
}
}
}
[RequireComponent(typeof(Collider))]
公共类碰撞操纵器:单行为
{
公共游戏对象玩家;
新型对撞机;
对撞机;
无效唤醒()
{
collider=GetComponent();
playerCollider=player.GetComponent();
}
bool wasPlayerAbove=假;
无效更新()
{
bool isPlayerAbove=player.transform.position.y-transform.position.y>=0;
//此检查仅用于减少对物理系统的调用
如果(wasPlayerAbove!=isPlayerAbove){
wasPlayerAbove=isPlayerAbove;
物理.忽略碰撞(对撞机,playerCollider,!isplayerBove);
}
}
}
你能告诉我你到目前为止做了些什么吗?我希望稳定性一直保持在那里。如果我禁用了对撞机,平台顶部的任何东西都会从中掉落吗?我编辑了我的答案:IgnoreClimition只禁用两个特定对撞机之间的碰撞。