【发布时间】:2017-05-20 17:53:49
【问题描述】:
在 Unity3d 上的游戏中,我有一个带有 主摄像头 组件的 player 对象。我需要禁用播放器,然后使用另一个相机启用另一个对象,但我有 sctripts,它可以检测玩家是否在看某个对象(使用 raycast)。如果玩家的相机被禁用,我有错误。这就是我检查播放器是否启用的原因。但是由于某种原因,统一忽略了这个检查
void Update ()
{
if (player == null)
player = GameObject.FindGameObjectWithTag("Player");
if (Input.GetButton("Fire1"))
if (DoPlayerLookAtButton() && isAimationReadyToPlay)
OpenCloseDoor();
}
bool DoPlayerLookAtButton()
{
if (player != null)
{
if (player.activeSelf) // why Unity don't see this string?
{
int layerMask = 1 << 9;
layerMask = ~layerMask;
RaycastHit _hit;
// I have error here:
Ray _ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
bool isHit = Physics.Raycast(_ray, out _hit, 2.0f, layerMask);
if (isHit && _hit.collider == thisCollider) return true;
else return false;
}
else return false;
}
else return false;
}
【问题讨论】: