我正在尝试寻找其他注册冲突的方法(除了OnCollisionEnter()
和之外OnCollisionExit()
).我目前正在使用Physics.OverlapBox()
,但我需要有关碰撞的更多信息; 即,正常,点.
我可以使用Physics.BoxCast()
,但问题是它移动一个给定距离的盒子,使用maxDistance = 0f
将无法工作.
我需要一种检查碰撞类似的方法,Physics.OverlapBox()
除了它还会返回有关转换中所有碰撞的信息.
任何帮助表示赞赏.谢谢.
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(),避免移动盒子?
我暂时遇到这个问题,以下是问题的一个例子:
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执行它一样?谢谢.
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)
我被告知要始终封装所有变量而不是将它们声明为公共变量,而自动实现似乎就是这样做的.
当字段被声明为公共时,这是否会使封装的目的无效?