@tortik92

Unity — Проблема с «if»?

Здраствуйте!
У меня возникла проблема с многопользовательской игрой:
Существует "Игрок 1" который предположим запустил игру в Unity и "игрок 2"б который играет через скомпилированный файл той же игры. (Разницы не имеет кто держит локальный хост (Я проверял) ).
Когда игрок который запустил игру в Unity (LocalPlayer) стреляет и попадает в другого игрока (RemotePlayer), в консоли Unity отображается "test_1", но если игрок в отдельном приложении (RemotePlayer) стреляет в игрока (LocalPlayer) "test_1" не появляется хотя должно. Также по какой то причине не отображается в консоли последняя часть кода: "Debug.Log ("В игрока " + _ID + " произвел выстрел");" .

Прикрепляю папку игры (Яндекс.Диск)
P.s: Наверно проблема в Playershoot.sc
Код:
using UnityEngine;
using UnityEngine.Networking;

public class PlayerShoot : NetworkBehaviour {
    
	public Weapon weapon;
	 
	[SerializeField]
	private Camera cam;
	 
	[SerializeField] 
	private LayerMask mask;
	
	void Start () {
		if (cam == null) {
			Debug.LogError ("PlayerShoot: No camera found");
			this.enabled = false;
		}	 
	}	 
	
	void Update () { 
		if (Input.GetButtonDown("Fire1")) {
			Shoot ();	
		}	
	}
	
	[Client]
	void Shoot () {
		RaycastHit _hit;
		if (Physics.Raycast (cam.transform.position, cam.transform.forward, out _hit, weapon.range, mask)) {
			if (_hit.collider.tag == "Player")
				CmdPlayerShoot (_hit.collider.name);
				Debug.Log ("Test_1");
		}
	}	
	
	[Command]
	void CmdPlayerShoot (string _ID) {
		Debug.Log ("В игрока " + _ID + " произвел выстрел");
	}	
	
}

Заранее благодарен за ответ!

https://yadi.sk/d/WyxP_qhPJqRZdQ
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы