BathroomDogComponentInstaller.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using UnityEngine;
  2. using System.Collections;
  3. /* 加载bathroom场景下狗的特定的component
  4. * 本代码需要挂在到场景中任意Game Object下。建议挂载在Player下
  5. */
  6. public class BathroomDogComponentInstaller : MonoBehaviour
  7. {
  8. public string displayDogName; // 在gameobject中显示的名字
  9. private DogProperty dogProperty;
  10. // Start is called once before the first execution of Update after the MonoBehaviour is created
  11. void Start()
  12. {
  13. dogProperty = UserProperty.dogs[GameData.focusDog];
  14. StartCoroutine(DogComponentAdd());
  15. }
  16. // Update is called once per frame
  17. //void Update()
  18. //{
  19. //}
  20. IEnumerator DogComponentAdd()
  21. {
  22. // 等待一帧,确保所有 Start() 方法都执行完成
  23. yield return null;
  24. // 第一帧以后开始执行
  25. GameObject dog = GameObject.Find(displayDogName);
  26. // 加载指定的Animator controller
  27. Animator animator = dog.GetComponent<Animator>();
  28. RuntimeAnimatorController animatorController = Resources.Load<RuntimeAnimatorController>("Dog/AnimatorController/shibaInu/BathroomDogBehavior");
  29. if (dogProperty.breed == "shibaInu") { animatorController = Resources.Load<RuntimeAnimatorController>("Dog/AnimatorController/shibaInu/BathroomDogBehavior"); }
  30. animator.runtimeAnimatorController = animatorController;
  31. // 加载bbx collider
  32. BoxCollider[] boxCollider = new BoxCollider[4];
  33. boxCollider[0] = dog.AddComponent<BoxCollider>();
  34. boxCollider[0].isTrigger = false;
  35. boxCollider[0].center = new Vector3(0, 0.3f, 0.05f);
  36. boxCollider[0].size = new Vector3(0.15f, 0.21f, 0.5f);
  37. // 加载bbx collider 1
  38. boxCollider[1] = dog.AddComponent<BoxCollider>();
  39. boxCollider[1].isTrigger = false;
  40. boxCollider[1].center = new Vector3(0, 0.4f, 0.24f);
  41. boxCollider[1].size = new Vector3(0.15f, 0.18f, 0.16f);
  42. // 加载bbx collider 2
  43. boxCollider[2] = dog.AddComponent<BoxCollider>();
  44. boxCollider[2].isTrigger = false;
  45. boxCollider[2].center = new Vector3(0, 0.1f, 0.13f);
  46. boxCollider[2].size = new Vector3(0.15f, 0.18f, 0.06f);
  47. // 加载bbx collider 3
  48. boxCollider[3] = dog.AddComponent<BoxCollider>();
  49. boxCollider[3].isTrigger = false;
  50. boxCollider[3].center = new Vector3(0, 0.1f, -0.17f);
  51. boxCollider[3].size = new Vector3(0.15f, 0.18f, 0.06f);
  52. // 加载script <DogCatchDetection>
  53. //DogCatchDetection dogScript = dog.AddComponent<DogCatchDetection>();
  54. }
  55. }