pickup.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Mirror;
  4. using UnityEngine;
  5. public class pickup : NetworkBehaviour
  6. {
  7. public string lootType = "default";
  8. public item lootData;
  9. float updaterInterval = 0.4f;
  10. void Awake(){
  11. updaterInterval += Random.Range(0,0.2f);
  12. }
  13. float t = 0;
  14. public float pickupDistance = 2;
  15. public float closestPlayerDist = float.MaxValue;
  16. [Server]
  17. void Update(){
  18. if(t < updaterInterval){
  19. t += Time.deltaTime;
  20. }else{
  21. ScanPlayers();
  22. t=0;
  23. }
  24. }
  25. void ScanPlayers(){
  26. playerNetwork[] players = FindObjectsOfType<playerNetwork>();
  27. if(players.Length <=0){return;}
  28. playerNetwork closestPlayer = players[0];
  29. closestPlayerDist = float.MaxValue;
  30. foreach(playerNetwork player in players){
  31. float dist = Vector3.Distance(transform.position, player.transform.position);
  32. if(dist < closestPlayerDist){
  33. closestPlayer = player;
  34. closestPlayerDist= dist;
  35. }
  36. }
  37. if(closestPlayerDist < pickupDistance){
  38. closestPlayer.PickupObject(this);
  39. NetworkServer.Destroy(gameObject);
  40. }
  41. }
  42. // private void OnTriggerEnter2D(Collider2D other) {
  43. // if(other.CompareTag("Player")){
  44. // for(int i = 0; i < inventory.slots.Length ; i++){
  45. // if(inventory.isFull[i] == false){
  46. // //then the item can be addded to the inventory
  47. // inventory.isFull[i] = true;
  48. // //instantiate the pickup item
  49. // Instantiate(itemBtn , inventory.slots[i].transform , false);
  50. // Destroy(gameObject);
  51. // break;
  52. // }
  53. // }
  54. // }
  55. // }
  56. }