unity3d 如何检查与禁用碰撞器的碰撞?

e0bqpujr  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在做一个二维的项目,一个红色的,一个蓝色的。
每次玩家按下“F”时,维度改变,然后来自实际维度的所有对象被禁用,而其他对象被启用。

if (Input.GetKeyDown(KeyCode.F)) {
            if (seeingRed == false) {
                seeingRed = true;
                setRed();               
            } else {
                seeingRed = false;
                setBlue();             
            }
}

public void setRed() {
        redObjects.SetActive(true);
        blueObjects.SetActive(false);    
}

public void setBlue () {
        redObjects.SetActive(false);
        blueObjects.SetActive(true);       
}

我想检查玩家的实际位置是否有一个被禁用的对象,如果是这样,不要改变尺寸,我尝试使用光线投射,但它不起作用,因为一个被禁用的对象没有物理。

l7mqbcuq

l7mqbcuq1#

尝试创建一个存储当前维度的公共布尔变量,然后您可以在需要了解当前维度时引用该变量。

public bool currentDimension = false //false means red dimension, true means blue

Edit:谢谢你的澄清。
这可能会帮助您:https://docs.unity3d.com/540/Documentation/Manual/LayerBasedCollision.html
您可以只禁用不同维度的精灵渲染器,而不是禁用整个对象。然后,您可以设置播放器仅与自己的层发生碰撞,并更改维度的层。然后从播放器发送光线投射并检查来自相反层的碰撞。

相关问题