TargetAnimal.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class TargetAnimal : MonoBehaviour
  5. {
  6. public Transform animalsBaseT {
  7. get {
  8. return this.transform.parent;
  9. }
  10. }
  11. public Vector3 hunterPosition {
  12. get {
  13. return ArmBow.ins.transform.position;
  14. }
  15. }
  16. //获取猎人到我的指针向量
  17. public Vector3 GetPointerHunterToMe() {
  18. Vector3 hunterPos = hunterPosition;
  19. Vector3 myPos = transform.position;
  20. hunterPos.y = myPos.y;
  21. return myPos - hunterPos;
  22. }
  23. public virtual void OnHit(Arrow arrow, Vector3 hitPoint, string partName)
  24. {
  25. }
  26. public void RotateByWorldY(float angle) {
  27. transform.forward = Quaternion.AngleAxis(angle, Vector3.up) * transform.forward;
  28. }
  29. //碰撞体
  30. private List<Transform> _targetAnimalParts;
  31. public List<Transform> targetAnimalParts {
  32. get {
  33. if (_targetAnimalParts == null) {
  34. _targetAnimalParts = new List<Transform>();
  35. GetTargetAnimalParts(transform, _targetAnimalParts);
  36. }
  37. return _targetAnimalParts;
  38. }
  39. }
  40. private void GetTargetAnimalParts(Transform transformBase, List<Transform> outList) {
  41. for (int i = 0; i < transformBase.childCount; i++) {
  42. Transform child = transformBase.GetChild(i);
  43. if (child.gameObject.name.StartsWith("TargetAnimalPart")) {
  44. outList.Add(child);
  45. }
  46. GetTargetAnimalParts(child, outList);
  47. }
  48. }
  49. public virtual int GetOnlineID() {
  50. throw new System.Exception("No OnlineID");
  51. }
  52. }