Wenn ich ein Objekt an und drücke den Knopf, muss ich etwas tun. Wenn ich es zum ersten Mal mache, funktioniert es, aber dann muss ich den Knopf nicht mehr drücken, ich kann nur auf das Objekt schauen. Aber Spieler muss bei Objekt suchen und die Taste drücken, sieht nicht nurRaycastHit Rückkehr die ganze Zeit wahr
private Collider thisCollider;
public int ActionNumber { get; private set; }
void Start()
{
thisCollider = GetComponent<Collider>();
}
void Update()
{
if (Input.GetButton("Fire1") && DoPlayerLookAtObject())
ActionsList();
}
bool DoPlayerLookAtObject()
{
int layerMask = 1 << 9;
layerMask = ~layerMask;
RaycastHit _hit;
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; // this return true all the time after first interaction with object
else
return false;
}
public bool ActionsList()
{
if (DoPlayerLookAtObject())
switch (thisCollider.name)
{
case "barthender": ActionNumber = 1; return true;
case "doorToStreet": ActionNumber = 2; return true;
default: Debug.Log("Error: Out of range"); break;
}
return false;
}
Wie ich es verwenden:
public OnMousePressCasino onMousePressCasinoBarthender;
public OnMousePressCasino onMousePressCasinoDoorToStreet;
if (onMousePressCasinoBarthender.ActionNumber == 1 &&
onMousePressCasinoBarthender.ActionsList())
// do something
if (onMousePressCasinoDoorToStreet.ActionNumber == 2 &&
onMousePressCasinoDoorToStreet.ActionsList())
// do something
Edit 1 Ignorieren Spieler Collider. Video aus dem Spiel
Es gibt true zurück, weil Sie sich treffen sind. 'Ray _ray = Camera.main.ScreenPointToRay (neuer Vector3 (Screen.width/2, Screen.height/2, 0));' setze das 'Z' weiter entfernt z.B. "2". Außerdem erwartet es immer, sich selbst zu treffen ... –
@ m.rogalski Ich ignoriere den Collider des Spielers hier: 'int layerMask = 1 << 9; layerMask = ~ layerMask; '. Ich kann das Objekt treffen. Aber wenn ich es zum zweiten Mal treffen will, brauche ich nicht auf den Knopf zu drücken, ich kann einfach auf Objekt – dima