c# - 统一: Player Jumping Issue

标签 c# unity3d

我有一段代码试图让玩家通过点击仅在方 block 1(左侧位置)和方 block 2(右侧)之间跳转。

Move() 函数的问题是它开始从方 block 1 跳到方 block 2,然后方 block 2 跳回方 block 1,但是从这一点开始,玩家从方 block 1 跳到左边立方体 2.

跳转功能正常,但我认为逻辑不正确。

移动:

void Move(){
    int i = 0;
    while ((isGrounded == true) && (i < 10)) {

        if(atCube1 == true){
            JumpRight();
        }

        if(atCube2 == true){
          JumpLeft();
        }

        i++;
    }
}

OnCollisionEnter:

void OnCollisionEnter (Collision col)
{
    Debug.Log("OnCollisionEnter");


    if (col.gameObject.name == "Cube 1"){
        Debug.Log ("++++++ C U B E 1   H I T ++++++++");

        atCube1 = true;
        isGrounded = true;

    }

    if(col.gameObject.name == "Cube 2"){

        Debug.Log ("Cube 2 hit");
        atCube2 = true;
        isGrounded = true;

    }
}

最佳答案

你应该在它离开 cube1 之后制作 atCube1 = false;(也为 cube2 做)。您也可以添加 isGrounded = false; 当它不碰撞任何东西时。

1-你从 cube1 开始,atCube1 = true

2-跳转到 cube2,atCube1 = trueatCube2 = true

3- 再次跳转到 cube1,它向左跳,因为 atCube2 = true 。事实上,由于 if 语句的顺序,它首先向右跳然后向左跳。只需将 false 值添加到 bool 值即可修复它。

关于c# - 统一: Player Jumping Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34300187/

相关文章:

c# - 如何在 Unity 中更改 Sprite uv?

xcode - 在通用架构项目上使用 -ObjC 链接器标志会导致 Mach-O 链接器错误?

c# - 当 Button 缺少 OnClick 时,Unity 缺少警告

c# - 如何更改 guilayout.label 字体大小?

c# - COM 接口(interface)将 COM 回调传递给 .Net 应用程序时出现内存泄漏

c# - WebAuthenticationBroker 在候选版本发布后的 Windows 8 Metro 应用程序中是否工作

c# - 更改 UI RectTransform 位置

c# - 现代用户界面 : How i can select TAB from Moderntab by code

c# - Quartz.Net 依赖注入(inject) .Net Core

c# - 通过脚本 C# 在特定点移动 unity3d 中的门