0

小细节:

大家好!我在工作时没有电脑在我面前。我实际上是在看回家后要做的事情的视频,所以我会尽我所能提取代码。

当谈到在平台角色上创建跳跃时,在大多数情况下,我看到的是一个附着在角色底部的物体,然后会创建一个地面检查以查看该物体是否撞到了什么东西。

我正在关注的教程可以检查许多不同的组件。( https://youtu.be/05TCTrpGB-4?t=6m54s )| 代码的确切时刻。

实际问题:

所以我一直试图想出我自己的方法,看起来更简单,但我被卡住了。所以我想,我想说的是,如果这个玩家身上的对撞机接触到任何其他对撞机,Grounded 是真的。

    //Variable:
private bool Grounded;

//movement handle
void HandleMovement(){
if (Input.GetKeyDown(KeyCode.Space) && grounded)){
    Ninjabody.AddForce(transform.up * jumpspeed ForcemMode.Impulse);
}
}

然后我按照参考指南:https ://docs.unity3d.com/ScriptReference/Collider2D.IsTouching.html

所以,要应用这个,它说使用public bool IsTouching(Collider2D collider);

我不知道 Collider 是否是它正在撞击的对撞机的名称,如果是这样,我将它命名为平台并放置它。一旦我测试它,我得到了一个错误。

我试图为你们搜索错误,但它本质上说 Ninja1.IsTouching 需要有一个主体,因为它没有被标记为某物。

据我了解,这意味着需要调用 IsTouching。我无法让它工作,所以我改用 Laymasks 尝试使用 ContactFilter ( https://docs.unity3d.com/ScriptReference/ContactFilter2D-layerMask.html )

private LasyerMask Platforms;

然后尝试在它自己的函数中调用它,但我不知道如何设置它。参考指南(https://docs.unity3d.com/ScriptReference/Collider2D.IsTouching.html)仅提供有关它作为变量的信息:

public bool IsTouching(Collider2D platform, ContactFilter2D Platforms);

如果我创建一个方法并在 handlemovement 内部调用该方法,它会中断得更多。我试过查找它,但我找不到使用 IsTouching 的引用,并且统一的引用让我循环创建一个变量,但我不知道如何应用该变量。

我将永远感激理解为什么这不起作用,以及我错过了什么。我知道这篇文章有点冗长,但我最好添加更多细节,而不是在有问题的帮助下留下。像往常一样提前谢谢大家。

4

0 回答 0