public void ShowHelp(Vector3 playerPos) { List <InteractablePNJ> pnjs = GetProps <InteractablePNJ>(); if (_pnjHelp == null && pnjs.Count > 0) { InteractablePNJ tPnj = pnjs[0]; InteractablePNJ testPnj; float dist = Mathf.Abs(Vector3.Distance(tPnj.transform.position, playerPos)); for (int i = 1; i < pnjs.Count; i++) { testPnj = pnjs[i]; float nDist = Vector3.Distance(testPnj.transform.position, playerPos); if (nDist < dist) { tPnj = testPnj; dist = nDist; } } if (dist < InteractablePNJ.helpDistance) { if (PlayerManager.Instance.playerType == EPlayer.GOV) { if (tPnj.budgetComponent.initialBudget == 0) { return; } } _pnjHelp = Instantiate(EarthManager.Instance.helpSpritePrefab, tPnj.transform.position + (tPnj.transform.up.normalized) * 0.15f, Quaternion.identity) as BillboardHelp; _pnjHelp.pnj = tPnj; _pnjHelp.Init(PlayerManager.Instance.playerType); _pnjHelp.SetVisibility(dist); } } else if (_pnjHelp != null) { float dist = Mathf.Abs(Vector3.Distance(_pnjHelp.pnj.transform.position, playerPos)); if (dist < InteractablePNJ.helpDistance) { _pnjHelp.SetVisibility(dist); } else { Destroy(_pnjHelp.gameObject); _pnjHelp = null; } } }
bool TapInteract() { InteractablePNJ pnj = _hit.transform.GetComponent <InteractablePNJ>(); BillboardHelp helpSprite = _hit.transform.GetComponent <BillboardHelp>(); if (pnj != null) { Events.Instance.Raise(new OnTapNPC(pnj)); return(true); } else if (helpSprite != null) { Events.Instance.Raise(new OnTapNPC(helpSprite.pnj)); return(true); } else if (_hit.transform.GetComponent <ItemPickup>() && PlayerManager.Instance.playerType == EPlayer.ECO) { Events.Instance.Raise(new OnTapItemPickUp(_hit.transform.gameObject)); return(true); } return(false); }