mirror of
https://github.com/Dadechin/Unity-WebSocket.git
synced 2025-07-04 04:14:34 +00:00
86 lines
2.3 KiB
C#
86 lines
2.3 KiB
C#
using FishNet.Object;
|
|
using UnityEngine;
|
|
|
|
namespace FishNet.Demo.HashGrid
|
|
{
|
|
public class MoveRandomly : NetworkBehaviour
|
|
{
|
|
//Colors green for client.
|
|
[SerializeField]
|
|
private Renderer _renderer;
|
|
|
|
//How quickly to move over 1s.
|
|
private float _moveRate = 0.5f;
|
|
//Maximum range for new position.
|
|
public const float Range = 25f;
|
|
//Position to move towards.
|
|
private Vector3 _goal;
|
|
//Position at spawn.
|
|
private Vector3 _start;
|
|
|
|
private void Update()
|
|
{
|
|
if (!base.IsController)
|
|
return;
|
|
|
|
transform.position = Vector3.MoveTowards(transform.position, _goal, (_moveRate * Time.deltaTime));
|
|
if (transform.position == _goal)
|
|
RandomizeGoal();
|
|
}
|
|
|
|
public override void OnStartNetwork()
|
|
{
|
|
_start = transform.position;
|
|
RandomizeGoal();
|
|
}
|
|
|
|
public override void OnStartServer()
|
|
{
|
|
if (!base.Owner.IsValid)
|
|
transform.position = (_start + RandomInsideRange());
|
|
}
|
|
|
|
public override void OnStartClient()
|
|
{
|
|
if (base.Owner.IsLocalClient)
|
|
{
|
|
_renderer.material.color = Color.green;
|
|
_moveRate *= 3f;
|
|
transform.position -= new Vector3(0f, 0f, 1f);
|
|
Camera c = Camera.main;
|
|
c.transform.SetParent(transform);
|
|
c.transform.localScale = Vector3.one;
|
|
c.transform.localPosition = new(0f, 0f, -5f);
|
|
}
|
|
else
|
|
{
|
|
_renderer.material.color = Color.gray;
|
|
}
|
|
}
|
|
|
|
public override void OnStopClient()
|
|
{
|
|
if (base.IsOwner)
|
|
{
|
|
Camera c = Camera.main;
|
|
if (c != null)
|
|
{
|
|
c.transform.SetParent(null);
|
|
c.transform.localScale = Vector3.one;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void RandomizeGoal()
|
|
{
|
|
_goal = _start + RandomInsideRange();
|
|
}
|
|
|
|
private Vector3 RandomInsideRange()
|
|
{
|
|
Vector3 goal = (Random.insideUnitSphere * Range);
|
|
goal.z = transform.position.z;
|
|
return goal;
|
|
}
|
|
}
|
|
} |