Don't snatch an item another player is carrying just because it passes in front of your face
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+16
-1
@@ -278,7 +278,10 @@ namespace MSCO
|
|||||||
}
|
}
|
||||||
else // gehört einem anderen Spieler
|
else // gehört einem anderen Spieler
|
||||||
{
|
{
|
||||||
if (active && Wins(LocalId, true, b.OwnerId, b.OwnerActive)) Claim(b, true); // Spieler greift sich das Objekt
|
// Trägt es gerade ein anderer, nur übernehmen, wenn wir es wirklich eben gegriffen haben - PickedObject
|
||||||
|
// zeigt oft noch auf ein altes Item; trägt es jemand an unserem Kopf vorbei, würden wir es ihm sonst entreißen
|
||||||
|
bool grab = b == driven || !b.OwnerActive || JustPicked;
|
||||||
|
if (active && grab && Wins(LocalId, true, b.OwnerId, b.OwnerActive)) Claim(b, true); // Spieler greift sich das Objekt
|
||||||
else if (Time.time - b.LastRecvTime > RemoteTimeout) SetFree(b);
|
else if (Time.time - b.LastRecvTime > RemoteTimeout) SetFree(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -688,8 +691,20 @@ namespace MSCO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GameObject lastPicked; // letzter Wert von PickedObject - ändert er sich, hat der Spieler wirklich neu gegriffen
|
||||||
|
float pickTime = -100f;
|
||||||
|
|
||||||
|
/// <summary>Hat der Spieler gerade eben (nicht vor Minuten) etwas gegriffen?</summary>
|
||||||
|
bool JustPicked { get { return Time.time - pickTime < 0.6f; } }
|
||||||
|
|
||||||
SyncedBody HeldBody()
|
SyncedBody HeldBody()
|
||||||
{
|
{
|
||||||
|
GameObject picked = pickedObject != null ? pickedObject.Value : null;
|
||||||
|
if (picked != lastPicked)
|
||||||
|
{
|
||||||
|
lastPicked = picked;
|
||||||
|
if (picked != null) pickTime = Time.time;
|
||||||
|
}
|
||||||
if (pickedObject == null || pickedObject.Value == null) return null;
|
if (pickedObject == null || pickedObject.Value == null) return null;
|
||||||
for (Transform t = pickedObject.Value.transform; t != null; t = t.parent)
|
for (Transform t = pickedObject.Value.transform; t != null; t = t.parent)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user