VehicleViewAnimator.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { _decorator, v3 } from "cc";
  2. import { AnimatorSkeletal } from "../../../../../extensions/oops-plugin-framework/assets/libs/animator/AnimatorSkeletal";
  3. import { AnimatorStateLogic } from "../../../../../extensions/oops-plugin-framework/assets/libs/animator/core/AnimatorStateLogic";
  4. import { Vehicle } from "../Vehicle";
  5. import { VehicleAnimatorType } from "../model/VehicleEnum";
  6. import { VehicleStateOpenDoor } from "./animator/VehicleStateOpenDoor";
  7. import { MoveToComp } from "../../common/ecs/position/MoveTo";
  8. import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops";
  9. const { ccclass } = _decorator;
  10. @ccclass("VehicleViewAnimator")
  11. export class VehicleViewAnimator extends AnimatorSkeletal {
  12. /**关门完成完成 */
  13. onOpenDoorComplete: Function = null!;
  14. onLeaveComplete: Function = null!;
  15. onWaitComplete: Function = null!;
  16. onStationComplete: Function = null!;
  17. /** 角色对象 */
  18. vehicle: Vehicle = null!;
  19. timer = null
  20. start() {
  21. super.start();
  22. // // 动画状态机
  23. // let asl: Map<string, AnimatorStateLogic> = new Map();
  24. // asl.set(VehicleAnimatorType.OpenDoor, new VehicleStateOpenDoor(this.vehicle));
  25. // this.initArgs(asl);
  26. }
  27. playAnimation(animName: string, loop: boolean): void {
  28. super.playAnimation(animName, loop)
  29. }
  30. moveToStation() {
  31. clearTimeout(this.timer)
  32. const moveTo = this.vehicle.add(MoveToComp, true)
  33. moveTo.speed = 3
  34. moveTo.node = this.vehicle.VehicleView.node
  35. moveTo.onComplete = this.onStationComplete
  36. moveTo.target = v3(0, 0, 0)
  37. oops.audio.playEffect('common/audio/bus_arrive_leave')
  38. }
  39. moveToWait() {
  40. this.timer = setTimeout(() => {
  41. if (this.vehicle) {
  42. const moveTo = this.vehicle.add(MoveToComp, true)
  43. moveTo.speed = 3
  44. moveTo.node = this.vehicle.VehicleView.node
  45. moveTo.target = v3(-3, 0, 0)
  46. moveTo.onComplete = this.onWaitComplete
  47. }
  48. clearTimeout(this.timer)
  49. }, 800)
  50. }
  51. moveToLeave() {
  52. const moveTo = this.vehicle.add(MoveToComp, true)
  53. moveTo.speed = 3
  54. moveTo.node = this.vehicle.VehicleView.node
  55. moveTo.target = v3(10, 0, 0)
  56. moveTo.onComplete = this.onLeaveComplete
  57. oops.audio.playEffect('common/audio/bus_arrive_leave')
  58. }
  59. protected onDestroy(): void {
  60. clearTimeout(this.timer)
  61. super.destroy()
  62. }
  63. }