mmorpg/Assets/Script/pickup.cs

66 lines
1.9 KiB
C#
Executable File

using System.Collections;
using System.Collections.Generic;
using Mirror;
using UnityEngine;
public class pickup : NetworkBehaviour
{
public string lootType = "default";
public item lootData;
float updaterInterval = 0.4f;
void Awake(){
updaterInterval += Random.Range(0,0.2f);
}
float t = 0;
public float pickupDistance = 2;
public float closestPlayerDist = float.MaxValue;
[Server]
void Update(){
if(t < updaterInterval){
t += Time.deltaTime;
}else{
ScanPlayers();
t=0;
}
}
void ScanPlayers(){
playerNetwork[] players = FindObjectsOfType<playerNetwork>();
if(players.Length <=0){return;}
playerNetwork closestPlayer = players[0];
closestPlayerDist = float.MaxValue;
foreach(playerNetwork player in players){
float dist = Vector3.Distance(transform.position, player.transform.position);
if(dist < closestPlayerDist){
closestPlayer = player;
closestPlayerDist= dist;
}
}
if(closestPlayerDist < pickupDistance){
closestPlayer.PickupObject(this);
NetworkServer.Destroy(gameObject);
}
}
// private void OnTriggerEnter2D(Collider2D other) {
// if(other.CompareTag("Player")){
// for(int i = 0; i < inventory.slots.Length ; i++){
// if(inventory.isFull[i] == false){
// //then the item can be addded to the inventory
// inventory.isFull[i] = true;
// //instantiate the pickup item
// Instantiate(itemBtn , inventory.slots[i].transform , false);
// Destroy(gameObject);
// break;
// }
// }
// }
// }
}