123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import { _decorator, CircleCollider2D, Component, Director, director, Label, Node, RigidBody2D, Size, Sprite, tween, UITransform, Vec2, Vec3 } from 'cc';
- import { model_content_item_data } from '../data';
- import { car } from './car';
- import { tools } from '../tools';
- import { base } from './base';
- import { audioManager } from '../manager/audioManager';
- import { config } from '../config';
- const { ccclass, property } = _decorator;
- @ccclass('coin')
- export class coin extends base {
- @property(Node) lab_num:Node = null
- private mCar:car = null;
- private isMove:boolean = false;
- private addHpNum:number = 0
- private active_node:boolean = false
- public init(data:model_content_item_data,car:car){
- this.mCar = car
- this.mData = data
- this.active_node = false
- this.node.position = new Vec3(this.mData.x,this.mData.y,this.node.position.z)
- this.node.getComponent(UITransform).contentSize = new Size(this.mData.w,this.mData.h)
- this.node.getComponent(CircleCollider2D).radius = this.mData.w*0.5
- this.unscheduleAllCallbacks()
- this.schedule(this.on_update,0.2)
- this.addHpNum = tools.randomCoin()
- this.lab_num.getComponent(Label).string = this.addHpNum +""
- this.getComponent(RigidBody2D).wakeUp()
- }
- protected ReSetNode(){
- this.node.position = Vec3.ZERO
- this.isMove = false
- }
- public getAddHpNum(){
- return this.addHpNum
- }
- public removeSelf(){
- let self = this;
- director.once(Director.EVENT_AFTER_DRAW,()=>{
- self.mCar.getGame().removeCoinForList(this.node)
- self.mCar.getGame().getPoolManager().putCoin(this.node)
- })
- }
- public moveToTarget(target_pos:Vec3){
- // this.node.getComponent(CircleCollider2D).enabled = false
- this.node.getComponent(RigidBody2D).sleep()
- tween(this.node).to(0.2,{position:target_pos}).call(()=>{
- audioManager.Instance().playSound(config.AUDIO.qiyou)
- this.removeSelf()
- }).start()
- }
- protected on_update(dt: number): void {
- if(this.mCar.getXiStatus()&&!this.isMove){
- let selfPos = this.node.parent.getComponent(UITransform).convertToWorldSpaceAR(this.node.position)
- let dis = Vec3.distance(this.mCar.node.position, this.mCar.node.parent.getComponent(UITransform).convertToNodeSpaceAR(selfPos))
- let carPos = this.mCar.node.parent.getComponent(UITransform).convertToWorldSpaceAR(this.mCar.node.position)
- if(dis<=tools.game_config.buff_xi_range){
- this.isMove = true
- this.unschedule(this.on_update)
- this.moveToTarget(this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(carPos))
- }
- }
- if(this.mCar!=null){
- let box_world=this.node.parent.getComponent(UITransform).convertToWorldSpaceAR(this.node.position)
- let p = this.mCar.node.parent.getComponent(UITransform).convertToNodeSpaceAR(box_world)
- if(p.y<(this.mCar.node.position.y+1500)&&p.y>this.mCar.node.position.y&&!this.active_node){
- this.active_node = true
- }
- if(p.y<(this.mCar.node.position.y-1000)&&this.active_node){
- this.active_node = false
- }
- this.updateBoxShowStatus()
- }
- }
- getIsActive(){
- return this.active_node
- }
- getIsCanCollider(){
- let box_world=this.node.parent.getComponent(UITransform).convertToWorldSpaceAR(this.node.position)
- let p = this.mCar.node.parent.getComponent(UITransform).convertToNodeSpaceAR(box_world)
- return Vec3.distance(p,this.mCar.node.position)<500
- }
- updateBoxShowStatus(){
- this.node.getComponent(Sprite).enabled = this.active_node
- this.lab_num.getComponent(Label).enabled = this.active_node
- }
- }
|