55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using Mirror;
|
||
|
using StarterAssets;
|
||
|
|
||
|
public class EnergyCell : NetworkBehaviour
|
||
|
{
|
||
|
public float EnergyContains = 25f;
|
||
|
|
||
|
public bool isStatic = false;
|
||
|
|
||
|
private float a;
|
||
|
|
||
|
void OnTriggerEnter(Collider collider)
|
||
|
{
|
||
|
if (!isServer) return;
|
||
|
|
||
|
if (collider.tag == "Player")
|
||
|
{
|
||
|
RpcRegenerateEnery(collider.gameObject);
|
||
|
RegenerateEnergy(collider.gameObject);
|
||
|
|
||
|
NetworkServer.Destroy(this.gameObject);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[Command(requiresAuthority = false)]
|
||
|
void CmdRegenerateEnery(GameObject target)
|
||
|
{
|
||
|
RpcRegenerateEnery(gameObject);
|
||
|
}
|
||
|
|
||
|
[ClientRpc]
|
||
|
void RpcRegenerateEnery(GameObject target)
|
||
|
{
|
||
|
RegenerateEnergy(target);
|
||
|
}
|
||
|
|
||
|
void RegenerateEnergy(GameObject target)
|
||
|
{
|
||
|
PersonController player = target.GetComponent<PersonController>();
|
||
|
player.InstantStaminaRegeneration(EnergyContains);
|
||
|
}
|
||
|
|
||
|
void FixedUpdate()
|
||
|
{
|
||
|
if (!isStatic)
|
||
|
{
|
||
|
a += Time.fixedDeltaTime;
|
||
|
transform.localPosition += new Vector3(0, Mathf.Sin(a) * 0.008f, 0);
|
||
|
}
|
||
|
}
|
||
|
}
|