add unity project for networking
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DefaultNamespace
|
||||
{
|
||||
public class Menu : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private GameObject sessionMenu;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
NetworkManager.Singleton.OnServerStarted += OnServerStarted;
|
||||
NetworkManager.Singleton.OnClientStarted += OnServerStarted;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
NetworkManager.Singleton.OnServerStarted -= OnServerStarted;
|
||||
NetworkManager.Singleton.OnClientStarted -= OnServerStarted;
|
||||
}
|
||||
|
||||
private void OnServerStarted()
|
||||
{
|
||||
sessionMenu.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7bab525765504ec4aee5797b494810a3
|
||||
timeCreated: 1765190119
|
||||
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace DefaultNamespace
|
||||
{
|
||||
public class NetworkPlayer : NetworkBehaviour
|
||||
{
|
||||
[Header( "Player Settings" )]
|
||||
[SerializeField] private float speed = 10.0f;
|
||||
[SerializeField] private float initialHealth = 100.0f;
|
||||
|
||||
[Header( "Elements")]
|
||||
[SerializeField] private Camera playerCamera;
|
||||
[SerializeField] private Canvas playerCanvas;
|
||||
[SerializeField] private Image playerHealthBar;
|
||||
|
||||
[Header( "Prefabs" )]
|
||||
[SerializeField] private NetworkObject projectilePrefab;
|
||||
|
||||
private NetworkVariable<float> _health = new NetworkVariable<float>();
|
||||
|
||||
public override void OnNetworkSpawn()
|
||||
{
|
||||
playerCamera.gameObject.SetActive(IsLocalPlayer);
|
||||
playerCanvas.gameObject.SetActive(IsLocalPlayer);
|
||||
|
||||
if (IsLocalPlayer)
|
||||
{
|
||||
_health.OnValueChanged += OnValueChanged;
|
||||
}
|
||||
|
||||
if (IsServer)
|
||||
{
|
||||
_health.Value = initialHealth;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnNetworkDespawn()
|
||||
{
|
||||
if (IsLocalPlayer)
|
||||
{
|
||||
_health.OnValueChanged -= OnValueChanged;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnValueChanged(float previousValue, float newValue)
|
||||
{
|
||||
playerHealthBar.fillAmount = newValue / initialHealth;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!IsLocalPlayer) return;
|
||||
|
||||
Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
|
||||
transform.Translate(input * (speed * Time.deltaTime));
|
||||
|
||||
if (Input.GetButtonDown("Fire1"))
|
||||
{
|
||||
FireProjectileRpc();
|
||||
}
|
||||
}
|
||||
|
||||
[Rpc(SendTo.Server)]
|
||||
private void FireProjectileRpc()
|
||||
{
|
||||
NetworkObject projectile = Instantiate(projectilePrefab, transform.position, Quaternion.identity);
|
||||
projectile.Spawn(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c51d25de9864edbb50b68457d532859
|
||||
timeCreated: 1765192645
|
||||
Reference in New Issue
Block a user