CreateFance.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class CreateFance : MonoBehaviour
  5. {
  6. bool creating = false;
  7. ShowMousePosition pointer;
  8. public GameObject polePrefab;
  9. public GameObject fencePrefab;
  10. GameObject lastPole;
  11. // Start is called before the first frame update
  12. void Start()
  13. {
  14. pointer = GetComponent<ShowMousePosition>();
  15. }
  16. // Update is called once per frame
  17. void Update()
  18. {
  19. getInput();
  20. }
  21. void getInput()
  22. {
  23. if(Input.GetMouseButtonDown(0))
  24. {
  25. startFence();
  26. }
  27. else if (creating)
  28. {
  29. updateFence();
  30. }
  31. if (Input.GetMouseButtonUp(0)) creating = false;
  32. }
  33. void startFence()
  34. {
  35. creating = true;
  36. var startPos = pointer.getWorldPoint();
  37. startPos = pointer.snapPosition(startPos);
  38. var startPole = Instantiate(polePrefab, startPos, Quaternion.identity);
  39. startPole.transform.position = new Vector3(startPos.x, startPos.y + 0.3f, startPos.z);
  40. lastPole = startPole;
  41. }
  42. void setFence()
  43. {
  44. creating = false;
  45. }
  46. void updateFence()
  47. {
  48. var current = pointer.getWorldPoint();
  49. current = pointer.snapPosition(current);
  50. current = new Vector3(current.x, current.y + 0.3f, current.z);
  51. if(!current.Equals(lastPole.transform.position))
  52. {
  53. CreateFenceSegment(current);
  54. }
  55. }
  56. void CreateFenceSegment(Vector3 current)
  57. {
  58. var newPole = Instantiate(polePrefab, current, Quaternion.identity);
  59. var middle = Vector3.Lerp(newPole.transform.position, lastPole.transform.position, 0.5f);
  60. var newFence = Instantiate(fencePrefab, middle, Quaternion.identity);
  61. newFence.transform.LookAt(lastPole.transform);
  62. lastPole = newPole;
  63. }
  64. }