小编bla*_*ole的帖子

如何从Physics.OverlapBox()获取碰撞数据?

我正在尝试寻找其他注册冲突的方法(除了OnCollisionEnter()和之外OnCollisionExit()).我目前正在使用Physics.OverlapBox(),但我需要有关碰撞的更多信息; 即,正常,点.

我可以使用Physics.BoxCast(),但问题是它移动一个给定距离的盒子,使用maxDistance = 0f将无法工作.

我需要一种检查碰撞类似的方法,Physics.OverlapBox()除了它还会返回有关转换中所有碰撞的信息.

任何帮助表示赞赏.谢谢.

c# collision-detection unity-game-engine

8
推荐指数
2
解决办法
1354
查看次数

如何在不移动盒子的情况下进行 BoxCast() ?

public static bool BoxCast(Vector3 center,
                           Vector3 halfExtents,
                           Vector3 direction,
                           Quaternion orientation = Quaternion.identity, 
                           float maxDistance = Mathf.Infinity,
                           ...);
Run Code Online (Sandbox Code Playgroud)

这些是 Unity3D 中盒播的参数。我对参数的用途感到困惑,maxDistance因为我们已经用参数绘制了方框halfExtents。如果我不想移动盒子怎么办?即,我想画一个盒子并获取有关其内部内容的信息。我不想移动盒子。使用maxDistance = 0似乎没有任何作用,因为它没有记录任何点击。使用maxDistance > 0会移动盒子,我希望避免这种情况。

如何使用 BoxCast(),避免移动盒子?

c# collision-detection unity-game-engine collider

2
推荐指数
1
解决办法
2593
查看次数

为什么我不能从另一个类访问实例的属性?

我暂时遇到这个问题,以下是问题的一个例子:

class Player(object):
    def __init__(self):
        self.weapon = "rifle"
        self.rifle_test = Rifle(self)
        self.dictionary = {}
        self.dictionary["rifle"] = self.rifle_test

    def check(self):
        print(self.weapon)
        print(self.dictionary[self.weapon].ammo)

class Rifle(object):
    def __init__(self, player):
        self.ammo = 10
        self.player = player
        self.player.check()

player_test = Player()
Run Code Online (Sandbox Code Playgroud)

我有一个玩家("player_test")和一个步枪("rifle_test").当我在Rifle()中调用check()时,控制台中没有打印任何内容.我已经尝试过移动东西,将两个类分开并且没有在player_test中使用rifle_test等.主要问题是:当我从另一个实例执行特定实例的函数时,该函数被执行但不被视为是是从携带它的实例执行的.换句话说,如果我从Rifle()执行check(),它将与我从player_test执行它不同.有没有办法执行该功能,就像我从player_test执行它一样?谢谢.

python

1
推荐指数
1
解决办法
61
查看次数

为什么我会使用自动实现而不是封装?

private int someInt;

public int GetSomeInt()
{
    return someInt;
}
Run Code Online (Sandbox Code Playgroud)

我什么时候可以使用上面的代码而不是下面的代码?

public int SomeInt { get; set; }
Run Code Online (Sandbox Code Playgroud)

我被告知要始终封装所有变量而不是将它们声明为公共变量,而自动实现似乎就是这样做的.

当字段被声明为公共时,这是否会使封装的目的无效?

c# encapsulation private public

0
推荐指数
1
解决办法
46
查看次数