BathroomDogComponentInstaller.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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>(DogBreedController.GetDogAnimationController(dogProperty.breed, "bathroom"));
  29. animator.runtimeAnimatorController = animatorController;
  30. // 加载bbx collider
  31. BoxCollider[] boxCollider = new BoxCollider[4];
  32. boxCollider[0] = dog.AddComponent<BoxCollider>();
  33. boxCollider[0].isTrigger = false;
  34. boxCollider[0].center = new Vector3(0, 0.3f, 0.05f);
  35. boxCollider[0].size = new Vector3(0.15f, 0.21f, 0.5f);
  36. // 加载bbx collider 1
  37. boxCollider[1] = dog.AddComponent<BoxCollider>();
  38. boxCollider[1].isTrigger = false;
  39. boxCollider[1].center = new Vector3(0, 0.4f, 0.24f);
  40. boxCollider[1].size = new Vector3(0.15f, 0.18f, 0.16f);
  41. // 加载bbx collider 2
  42. boxCollider[2] = dog.AddComponent<BoxCollider>();
  43. boxCollider[2].isTrigger = false;
  44. boxCollider[2].center = new Vector3(0, 0.1f, 0.13f);
  45. boxCollider[2].size = new Vector3(0.15f, 0.18f, 0.06f);
  46. // 加载bbx collider 3
  47. boxCollider[3] = dog.AddComponent<BoxCollider>();
  48. boxCollider[3].isTrigger = false;
  49. boxCollider[3].center = new Vector3(0, 0.1f, -0.17f);
  50. boxCollider[3].size = new Vector3(0.15f, 0.18f, 0.06f);
  51. // 加载script <DogCatchDetection>
  52. //DogCatchDetection dogScript = dog.AddComponent<DogCatchDetection>();
  53. }
  54. }