12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { _decorator, CCInteger, Component, find, Label, Node, tween, v2, v3 } from 'cc';
- import { GameUtil } from '../GameUtil';
- const { ccclass, property } = _decorator;
- @ccclass('CarBoxComponent')
- export class CarBoxComponent extends Component {
- @property(Label)
- label: Label = null
- @property(CCInteger)
- get num() {
- return this._num
- }
- set num(value) {
- this._num = value
- this.label.string = `${value}`
- }
- @property(CCInteger)
- private _num: number = 3
- isAnimateOut: boolean = false
- /** 盒子出车*/
- outCarTween() {
- console.log("outCarTween 盒子出车")
- this.isAnimateOut = true
- const car = this.node.getChildByName("cars").children[0]
- const rotation = car.angle;
- this.num -= 1
- // 根据角度计算方向向量
- let direction = v2(0, 0);
- if (rotation === -90) {
- direction = v2(1, 0); // 朝右
- } else if (rotation === 0) {
- direction = v2(0, 1); // 朝上
- } else if (rotation === 90) {
- direction = v2(-1, 0); // 朝左
- } else if (rotation === 180) {
- direction = v2(0, -1); // 朝下
- } else {
- const adjustedAngle = rotation - 90;
- direction = v2(-Math.cos(adjustedAngle * (Math.PI / 180)), Math.sin(-adjustedAngle * (Math.PI / 180)));
- }
- const objs = GameUtil.getWorldPositionAsVec2(car);
- const obje = objs.add(direction.multiplyScalar(300));
- car.setParent(find("Canvas/Scene/Levels").children[0], true);
- tween(car)
- .to(0.2, { worldPosition: v3(obje.x, obje.y, 0) })
- .call(() => {
- this.isAnimateOut = false
- })
- .start();
- }
- }
|