我正在开发一个类似于我的世界的基于体素的项目,我和我的第一个人控制器遇到了问题。
http://pastebin.com/XaFCM8zC - >我会发布整件事情,所以没有遗漏任何重要内容。
我有这个OnCollisionStay方法,可以检测我遇到的墙角(AKA我不想在90度的墙上跑,或者能够垃圾跳到爬山)
void OnCollisionStay(Collision collision){
foreach (ContactPoint contactPoint in collision.contacts) {
groundNormal += contactPoint.normal;
if (contactPoint.normal.y > Mathf.Cos (slopeLimit * Mathf.Deg2Rad)) {
tooSteep = false;
}
}
if (collision.contacts.Length > 0) {
groundNormal /= collision.contacts.Length;
}
grounded = true;
}
它工作正常,但问题出现在我的FixedUpdate方法中,我通过这一行限制我的移动代码:
if (!tooSteep || !grounded) {
所以我只能移动,如果它不要陡峭,或者我没有接地,但我试图把它移到我可以移动的任何地方,只是不要走路/跳墙。
我尝试制作一个“canJump”变量,但只解决了部分变量。 如果用户与太陡的墙碰撞,如何防止用户输入影响y速度?
答案 0 :(得分:0)
打电话给我的一个伙伴,他说我明显忽视了。
显然,团结的默认对手对它们有一定程度的摩擦。我刚刚创建了一个物理材料,其中0系数用于两种类型的摩擦,并且按预期工作,我只需要限制墙跳,这不是一个问题。
希望这有助于将来。