TargetRpc выполняется на отправителе, а не на цели (зеркальное единство)C#

Место общения программистов C#
Ответить
Anonymous
 TargetRpc выполняется на отправителе, а не на цели (зеркальное единство)

Сообщение Anonymous »

У меня есть простая механика удара, в которой я хочу, чтобы клиент, ударивший по объекту, лишился возможности прыгнуть на игрока, которого он ударил. По какой-то причине Debug.Log($"Target hit") печатается на правильном клиенте, но логическое значение canJump меняется на false в объекте playerOwned отправителя команды, а не в цели. Я использую зеркальную сетевую библиотеку.
У меня в скрипте есть две функции.

Код: Выделить всё

[Command]
private void CmdPunch()
{
// Cast a sphere in the forward direction of the player
RaycastHit hit;
float sphereRadius = 0.5f; // Adjust the radius as needed
if (Physics.SphereCast(transform.position, sphereRadius, steve.forward, out hit, 6))
{

// Check if the object hit is on the "Player" layer
if (hit.collider.CompareTag("Player"))
{
// Get the parent GameObject of the hit collider
GameObject hitParent = hit.collider.transform.parent.gameObject;

// Get the NetworkIdentity of the hit parent GameObject
NetworkIdentity hitNetworkIdentity = hitParent.GetComponent();

if (hitNetworkIdentity != null)
{
// Get the NetworkConnectionToClient from the hit NetworkIdentity
NetworkConnectionToClient hitConnection = hitNetworkIdentity.connectionToClient;

// Now you can use hitConnection to perform further actions, such as reducing the player's speed
if (hitConnection != null)
{
// Call TargetPunch on the hit player
TargetPunch(hitConnection);
}
}
}
}
}

[TargetRpc]
public void TargetPunch(NetworkConnectionToClient target)
{
Debug.Log($"Target hit");

canJump = false;
}
Возможно, я неправильно понимаю команды и TargetRpc

Подробнее здесь: https://stackoverflow.com/questions/786 ... rror-unity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»