【发布时间】:2015-04-21 17:05:52
【问题描述】:
我正在制作一个简单的 2D 平台游戏,我遇到了让我的角色在冰冷的地面上滑倒的问题。
创建 2D 物理材质适用于墙壁,但玩家在地面上时似乎不会滑动,即使摩擦力为 0,所以我正在尝试通过代码而不是物理材质来完成。
// Colliding with ICE
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "ICE")
{
TouchingIce = true;
}
}
void OnCollisionStay2D(Collision2D col)
{
if (col.gameObject.tag == "ICE")
{
TouchingIce = true;
}
}
(我知道检测结冰的地面没有问题,因为我可以在检查器中看到 TouchingIce Bool 按预期变为真和假。)
然后在更新中:
if (TouchingIce) {
iceMovement = true;
} else
{
iceMovement = false;
}
最后在fixedUpdate中:
if (iceMovement)
{
// this is where I'm stuck
}
当玩家在固定更新中停在正常地面上时,我的动作是这样的
float move = Input.GetAxis("Horizontal"); // moving along horizontal Axis
anim.SetFloat ("Speed", Mathf.Abs (move));
if (grounded)
{
rb2d.velocity = new Vector2 (move * maxSpeed, rb2d.velocity.y);
}
如果您需要查看我的其余代码,请告诉我,我将发布其余部分。
【问题讨论】:
-
您可能希望将此迁移到 game development stack exchange
-
谢谢你,我真的不知道有一个专门用于游戏开发的堆栈页面,我会确保我以后发布到那里:)