TargetAnimal.cs 1.7 KB

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