好的,我开始变得更好一些。我正在尝试爬山
我的代码可以识别我何时在墙壁上,并且可以使他攀爬,但是我可以通过关闭重力标尺或在墙壁为真时将其设置为0来做到这一点
然后在离开墙壁时将其恢复为原始设置。...
它似乎不正确...
我的意思是它会上升,然后当距离超过条件时,重力比例会返回到原始设置,但是如果我放开移动操纵杆,除非再次重置重力比例,它将继续升高,甚至仍然像addforce一样比翻译...我还是团结的新手,所以我不确定我在寻找什么
我需要的是,如果移动操纵杆始终使用其垂直值向上移动,而不是向上移动(如果移动操纵杆为0,则比在墙上暂停并停留在该点处,如果向下移动,则他可以向下爬升)>
这是我的3个功能
private void OnCollisionEnter2D(Collision2D col) {
if (col.gameObject.tag == "climbable") {
is_on_wall = true;
currentWall = col.gameObject.transform;
currentWallCollider = col.collider;
}
}
private bool found_wall() {
if (currentWall) {
if (Physics2D.Distance (currentWallCollider, heroCollider).distance < 10) {
rb.gravityScale = 0;
return true;
} else {
rb.gravityScale = 25;
}
}
return false;
}
private void climb() {
if (vertical > 0.5f) {
transform.Translate (0, 1f, 0);
} else if (vertical < -0.5f) {
transform.Translate (0, -1f, 0);
} else {
transform.Translate (0, 0, 0);
}
}
private void FixedUpdate() {
if (can_jump()) {
rb.AddForce (new Vector2 (0, jumpHeight));
}
if (found_wall ()) {
climb ();
}
}
它们在固定更新中被称为
请帮助取消迷惑