首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Physics.IgnoreCollision()不工作

Physics.IgnoreCollision()不工作
EN

Stack Overflow用户
提问于 2018-02-23 20:24:04
回答 2查看 3.1K关注 0票数 1

我在场景中有一个刚体GameObject,它通过枚举标记来改变它的物理状态

代码语言:javascript
运行
复制
public enum ObjState
{
    IgnorePC,
    DontIgnorePC
}
public ObjState m_objState;

通过这个标志和switch语句,我试图让这个gameObject在需要的时候发生冲突或不冲突。

代码语言:javascript
运行
复制
private void FixedUpdate()
{
    switch (m_objState)
    {
        case ObjState.IgnorePC:
            IgnorePC();
            break;
        case ObjState.DontIgnorePC:
            StopIgnoringPC();
            break;
    }
}

public void IgnorePC()
{
    Collider IO = GetComponent<Collider>();
    CharacterController PC = m_PC.GetComponent<CharacterController>();

    Physics.IgnoreCollision(IO, PC, true);
}

public void StopIgnoringPC()
{
    Collider IO = GetComponent<Collider>();
    CharacterController PC = m_PC.GetComponent<CharacterController>();

    Physics.IgnoreCollision(IO, PC, false);
}

然而,我遇到了不一致的情况。特别是,当我手动关闭isKinematic并尝试使用IgnoreCollision()通过PC时,我认为我误解了这个函数的用法。

我试图保持这个刚体非运动学的同时忽略碰撞的原因是,有时当我想要移动这个物体时,我仍然希望它通过PC。这里我的方法出了什么问题?

EN

回答 2

Stack Overflow用户

发布于 2018-02-23 20:59:26

您正在尝试将CharacterController类型参数传递给Physics.IgnoreCollision方法的Collider类型参数。

要解决问题,请执行以下操作:

  • 检查(如果没有)对象上的Collider,并将您的代码保存到CharacterController中:

代码语言:javascript
运行
复制
public enum ObjState { IgnorePC, DontIgnorePC }
public ObjState m_objState;
public GameObject m_PC;
Collider IO, PC;

private void Awake() {
    IO = GetComponent<Collider>();
}

private void Start() {
    PC = m_PC.GetComponent<Collider>();
}

private void FixedUpdate() {
    switch (m_objState) {
        case ObjState.IgnorePC:
            IgnorePC();
            break;
        case ObjState.DontIgnorePC:
            StopIgnoringPC();
            break;
    }
}

public void IgnorePC() {
    Physics.IgnoreCollision(IO, PC, true);
}

public void StopIgnoringPC() {
    Physics.IgnoreCollision(IO, PC, false);
}
票数 0
EN

Stack Overflow用户

发布于 2018-02-24 09:02:14

我认为在Unity 5.6上刚体之间的IgnoreCollisions被破坏了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48947856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档