Add StickGame Assets

This commit is contained in:
Dzejkobik007
2024-03-24 22:21:16 +01:00
parent 5a5812c0c7
commit 6c8b523d1f
6643 changed files with 596260 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
public class DestroyAfterDelay : MonoBehaviour
{
[SerializeField]
private float _delay = 1f;
private void Awake()
{
Destroy(gameObject, _delay);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3f244f524a030c6459722c6594b1e9bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7a9331e21bfaa0a4aaac4ffe7d8d644c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,67 @@
using FishNet.Object;
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
/// <summary>
/// DEMO. CODE IS NOT OPTIMIZED.
/// Aims the camera.
/// </summary>
public class Aim : NetworkBehaviour
{
public PlayerCamera PlayerCamera { get; private set; }
private readonly Vector3 _offset = new Vector3(0f, 1.65f, 0f);
public override void OnStartClient()
{
if (base.IsOwner)
PlayerCamera = Camera.main.transform.GetComponent<PlayerCamera>();
}
private void Update()
{
if (!base.IsOwner || PlayerCamera == null)
return;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
MoveAim();
MoveCamera();
}
/// <summary>
/// Aims camera.
/// </summary>
private void MoveAim()
{
float speed = 2f;
//Yaw.
transform.Rotate(new Vector3(0f, Input.GetAxis("Mouse X") * speed, 0f));
//Pitch.
float pitch = PlayerCamera.transform.eulerAngles.x - (Input.GetAxis("Mouse Y") * speed);
/* If not signed on X then make it
* signed for easy clamping. */
if (pitch > 180f)
pitch -= 360f;
pitch = Mathf.Clamp(pitch, -89f, 89f);
PlayerCamera.transform.eulerAngles = new Vector3(pitch, transform.eulerAngles.y, transform.eulerAngles.z);
}
/// <summary>
/// Moves camera.
/// </summary>
private void MoveCamera()
{
PlayerCamera.transform.position = transform.position + _offset;
PlayerCamera.transform.rotation = Quaternion.Euler(PlayerCamera.transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e6d656f377f37164d8d7431aa4e43cdb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,20 @@
using FishNet.Component.ColliderRollback;
using FishNet.Managing.Timing;
using FishNet.Object;
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
/// <summary>
/// DEMO. CODE IS NOT OPTIMIZED.
/// Fires at objects.
/// </summary>
public class Fire : NetworkBehaviour
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9d3558aad46c24549bea48d0e3938264
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,19 @@
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
/// <summary>
/// DEMO. CODE IS NOT OPTIMIZED.
/// Doesn't do much...
/// </summary>
public class PlayerCamera : MonoBehaviour
{
/// <summary>
/// MuzzleFlash on the weapon.
/// </summary>
public Transform MuzzleFlash;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fe0209d73083bf744ba4925f8cad7144
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,50 @@
using FishNet.Object;
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
/// <summary>
/// DEMO. CODE IS NOT OPTIMIZED.
/// Moves the player around.
/// </summary>
public class PlayerMotor : NetworkBehaviour
{
[SerializeField]
private float _moveRate = 3f;
private CharacterController _characterController;
public override void OnStartClient()
{
if (base.IsOwner)
_characterController = GetComponent<CharacterController>();
}
private void Update()
{
if (base.IsOwner)
{
Move();
}
}
private void Move()
{
if (_characterController == null)
return;
Vector3 gravity = new Vector3(0f, -10f, 0f);
Vector3 inputs = transform.TransformDirection(
new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"))
);
_characterController.Move((gravity + inputs) * _moveRate * Time.deltaTime);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c718ab30626bbd648952910f74780a06
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9b80990f4a80a944c9394e21c9c2187c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,95 @@
using FishNet.Connection;
using FishNet.Managing;
using FishNet.Managing.Timing;
using FishNet.Object;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
/// <summary>
/// DEMO. CODE IS NOT OPTIMIZED.
/// Shows where an object was when client hit it, and where it was after server rolled it back.
/// </summary>
public class RollbackVisualizer : NetworkBehaviour
{
[SerializeField]
private GameObject _originalPrefab;
[SerializeField]
private GameObject _rollbackPrefab;
[SerializeField]
private TextCanvas _textCanvasPrefab;
/// <summary>
/// Average accuracy over the past 30 shots.
/// </summary>
private List<float> _accuracyAverage = new List<float>();
private void OnDisable()
{
_accuracyAverage.Clear();
}
/// <summary>
/// Shows difference between where object was when client shot it, and where it was after rollback.
/// </summary>
/// <param name="original"></param>
/// <param name="rolledBack"></param>
[Server]
public void ShowDifference(NetworkObject clientObject, Vector3 original, Vector3 rolledBack)
{
//Only send to client if not host.
if (!base.IsHost)
{
float difference = Vector3.Distance(original, rolledBack);
PrintAverage(false, difference, base.NetworkManager);
TargetShowDifference(clientObject.Owner, original, rolledBack);
}
}
[TargetRpc]
private void TargetShowDifference(NetworkConnection conn, Vector3 original, Vector3 rollback)
{
Instantiate(_originalPrefab, original, transform.rotation);
Instantiate(_rollbackPrefab, rollback, transform.rotation);
float difference = Vector3.Distance(original, rollback);
string accuracyText = PrintAverage(true, difference, base.NetworkManager);
TextCanvas tc = Instantiate(_textCanvasPrefab);
tc.SetText(accuracyText);
}
/// <summary>
/// Prints an average accuracy, returning what was printed.
/// </summary>
/// <param name="fromServer">True if difference is received from the server.</param>
private string PrintAverage(bool fromServer, float difference, NetworkManager nm)
{
//If clientHost...
if (nm.IsHost)
{
string result = $"Accuracy will not show properly when as clientHost.{Environment.NewLine}Use a separate client and server for testing.";
Debug.Log(result);
return result;
}
else
{
_accuracyAverage.Add(difference);
if (_accuracyAverage.Count > 20)
_accuracyAverage.RemoveAt(0);
string currentHit = $"Accuracy is within {difference.ToString("0.0000")} units.";
string allHit = $"{_accuracyAverage.Count} hit average is {(_accuracyAverage.Sum() / _accuracyAverage.Count).ToString("0.0000")}.";
string result = $"{currentHit} {allHit}";
Debug.Log(result);
return result;
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6c5d5c9fcdb14704d9c64b18dc05a809
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
using UnityEngine;
using UnityEngine.UI;
namespace FishNet.Example.ColliderRollbacks
{
public class TextCanvas : MonoBehaviour
{
[SerializeField]
private Text _text;
private static TextCanvas _instance;
private void Awake()
{
if (_instance != null)
Destroy(_instance.gameObject);
_instance = this;
}
public void SetText(string text)
{
_text.text = text;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d0dc71af4e9bb144195230171a19cca9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,35 @@
using FishNet.Object;
using UnityEngine;
namespace FishNet.Example.ColliderRollbacks
{
public class Strafe : NetworkBehaviour
{
public float MoveRate = 2f;
public float MoveDistance = 3f;
private bool _movingRight = true;
private float _startX;
public override void OnStartServer()
{
_startX = transform.position.x;
}
private void Update()
{
if (base.IsServer)
{
float x = (_movingRight) ? _startX + MoveDistance : _startX - MoveDistance;
Vector3 goal = new Vector3(x, transform.position.y, transform.position.z);
transform.position = Vector3.MoveTowards(transform.position, goal, MoveRate * Time.deltaTime);
if (transform.position == goal)
_movingRight = !_movingRight;
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 088014ab71fc022458b82ed8c9792b1b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: