VehicleViewController.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { Component, _decorator, v3, Collider, Layers, CapsuleCollider } from "cc";
  2. import { Vehicle } from "../Vehicle";
  3. import { MoveToComp } from "../../common/ecs/position/MoveTo";
  4. import { VehicleSitComp } from "../bll/VehicleCheck";
  5. import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
  6. import { Puppet } from "../../puppet/puppet";
  7. import { PuppetModelComp } from "../../puppet/model/PuppetModelComp";
  8. import { smc } from "../../common/SingletonModuleComp";
  9. import { PuppetAnimatorType } from "../../puppet/model/PuppetEnum";
  10. const { ccclass, property } = _decorator;
  11. /** 车辆控制 */
  12. @ccclass('VehicleViewController')
  13. export class VehicleViewController extends Component {
  14. /** 角色对象 */
  15. vehicle: Vehicle = null!;
  16. onLoad() {
  17. const collider = this.node.getComponent(Collider);
  18. if (collider) {
  19. collider.on('onTriggerEnter', this.onTriggerEnter, this);
  20. }
  21. }
  22. onTriggerEnter(event, self) {
  23. const { otherCollider } = event
  24. // 确认触发事件的对象是玩家
  25. if (otherCollider.node.layer === Layers.Enum.PUPPET) {
  26. this.vehicle.VehicleView.animator.playAnimation('opendoor',false); // 播放开门动画
  27. // this.vehicle.add(VehicleSitComp)
  28. // if (this.vehicle.VehicleModel.isFull)
  29. // this.vehicle.VehicleModel.ready = true
  30. this.createPuppet(this.vehicle)
  31. }
  32. }
  33. createPuppet(v: Vehicle) {
  34. const account = smc.initialize.account
  35. const puppet = ecs.getEntity<Puppet>(Puppet)
  36. const puppetModel = puppet.get(PuppetModelComp)
  37. puppetModel.color = v.VehicleModel.color
  38. puppetModel.withColider = false
  39. puppet.load(this.node, v.VehicleModel.color, v.VehicleModel.sitPos[v.children.size],account.AccountModel.skin);
  40. this.vehicle.addChild(puppet)
  41. puppet.PuppetView.animator.toRight()
  42. puppet.PuppetView.animator.playAni(PuppetAnimatorType.Sit)
  43. puppet.PuppetView.animator.onScaleComplete = () => {
  44. // console.log("结果",!checkpoint.CheckpointModel.puppets.some(val => val.PuppetModel?.color === this.vehicle.VehicleModel.color))
  45. // console.log(checkpoint.CheckpointModel.puppets)
  46. if (v.children.size >= v.VehicleModel.capcity||!account.checkpoint.CheckpointModel.puppets.some(val => val.PuppetModel?.color === this.vehicle.VehicleModel.color))
  47. this.vehicle.VehicleModel.ready = true
  48. }
  49. puppet.PuppetView.animator.scale()
  50. }
  51. onDestroy() {
  52. }
  53. }