Role.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { _decorator, CircleCollider2D, Collider, Collider2D, Component, Contact2DType, ERigidBody2DType, ICollisionEvent, IPhysics2DContact, Node, PhysicsSystem2D, RigidBody2D, Vec2, Vec3 } from 'cc';
  2. import { EventManager } from '../EventManager';
  3. import { AudioManager } from '../Set/AudioManager';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('Role')
  6. export class Role extends Component {
  7. rigidBody: any;
  8. public start() {
  9. let collider = this.getComponent(Collider2D);
  10. if (collider) {
  11. collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
  12. }
  13. }
  14. onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) {
  15. // 只在两个碰撞体开始接触时被调用一次
  16. switch (otherCollider.node.name) {
  17. case 'Top':
  18. case 'Bottom':
  19. case 'dici':
  20. EventManager.instance.et.emit(EventManager.EventType.Cut_haert);
  21. AudioManager.Instance.playEffict(AudioManager.dead)
  22. break;
  23. case 'Xin':
  24. EventManager.instance.et.emit(EventManager.EventType.Add_haert);
  25. AudioManager.Instance.playEffict(AudioManager.heart)
  26. this.scheduleOnce(() => {
  27. otherCollider.node.active = false;
  28. }, 0)
  29. break;
  30. default:
  31. break;
  32. }
  33. }
  34. }