FlyUp/assets/Script/GameManager.ts
2024-08-07 19:02:40 +08:00

837 lines
29 KiB
TypeScript

// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import GameData from './GameData';
import { GameTool } from './tool/GameTool';
import { Notification } from './tool/Notification';
const {ccclass, property} = cc._decorator;
@ccclass
export default class GameManager extends cc.Component {
@property(cc.Camera)
Camera: cc.Camera = null;
@property(cc.Node)
topUI: cc.Node = null;
@property(cc.Node)
Player: cc.Node = null;
@property(cc.Node)
Ground: cc.Node = null;
@property(cc.Node)
Xin: cc.Node = null;
@property(cc.Label)
time: cc.Label = null;
@property(cc.Node)
GameOver: cc.Node = null;
@property(cc.Node)
Tip: cc.Node = null;
@property([cc.Prefab])
blockPrefab : Array<cc.Prefab> = [];
round: number; //回合
level: number; //回合
static _instance: any;
blockArray: any;
cameraMove:boolean
countHeight:number;
countTime: number;
over: boolean;
begin: boolean;
interfere: boolean;
oldSpeed: number; //上一回合速度
score: number; //总得分
difficultyMax:number; //最高难度系数
difficultyArray:number;
drop: number; //摄像机落差
guide: number; //记录引导步骤
Air: any;
Air2: any;
block: cc.Node;
// LIFE-CYCLE CALLBACKS:
onLoad () {
cc.game.setFrameRate(61);
// 示例使用
var manager = cc.director.getCollisionManager();
manager.enabled = true;
// manager.enabledDebugDraw = true;
GameManager._instance = this;
// GameData._instance.GM_INFO.probation = false;
this.Air = [];
this.Air2 = [];
}
protected onEnable(): void {
Notification.on("createBlock",this.createBlock,this);
Notification.on("addScore",this.addScore,this);
Notification.on("createCrackBlock",this.createCrackBlock,this);
Notification.on("showGround",this.showGround,this);
Notification.on("death",this.getDeath,this);
Notification.on("jump",this.jump,this);
Notification.on("setData",this.setData,this);
}
protected onDestroy(): void {
Notification.off("createBlock",this.createBlock);
Notification.off("addScore",this.addScore);
Notification.off("createCrackBlock",this.createCrackBlock);
Notification.off("death",this.getDeath);
Notification.off("jump",this.jump);
Notification.off("showGround",this.showGround);
Notification.off("setData",this.setData);
}
//根据是否全面屏,做独立适配方面
fit(){
this.node.getChildByName("bg2").y = -2167.675;
var jg = this.setFit();
if(!jg){
this.node.getChildByName("bg2").y = -2100;
this.topUI.y = 660;
}
}
//判断全面屏
getSetScreenResolutionFlag () {
let size = cc.winSize;
let width = size.width;
let height = size.height;
if ((height / width) > (16.2 / 9)) return false;
return true;
}
//判断全面屏适配
setFit () {
let flag = this.getSetScreenResolutionFlag();
if (flag) {
} else {
}
return flag;
}
init(){
this.drop = this.topUI.y - this.Camera.node.y;
this.score = 0;
this.oldSpeed = 10;
this.guide = -1;
this.begin = true;
this.over = false;
this.interfere = false;
this.round = 0;
this.level = 0;
GameData._instance.GM_INFO.levelMax = 1;
GameData._instance.GM_INFO.difficultyMax = 1;
GameData._instance.GM_INFO.life = 3;
this.blockArray = [];
this.difficultyArray = 0;
this.cameraMove = false;
this.countTime = 180;
this.topUI.getChildByName("xin1").active = true;
this.topUI.getChildByName("xin2").active = true;
this.topUI.getChildByName("xin3").active = true;
this.topUI.getChildByName("star1").active = false;
this.topUI.getChildByName("star2").active = false;
this.topUI.getChildByName("star3").active = false;
GameData._instance.LEVEL_init();
this.schedule(this.updateCountDownTime,1);
}
start () {
// this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
this.fit();
this.init();
// GameData._instance.GM_INFO.probation = false;
if(GameData._instance.GM_INFO.probation){
this.Player.getComponent("Player").jumpPause = true;
let tip = this.Tip.getChildByName("tip");
this.tipShow(tip,-1,true);
}
else{
this.node.getChildByName("Begin").opacity = 0;
this.node.getChildByName("Begin").scale = 2;
if(this.node.getChildByName("Begin")){
cc.tween(this.node.getChildByName("Begin"))
.to(0.5,{opacity:255,scale:1})
.delay(0.5)
.to(0.5,{opacity:0,scale:0})
.call(() =>{
this.startGame();
})
.start();
}
else{
setTimeout(() => {
this.startGame();
}, 1000);
}
}
}
//开启引导
startGuide(type,revive){ //type为第几步
this.guide = type;
console.log("startGuide",type);
if(type == 0){
this.careteGuideBlock(1);
}
else if(type == 2){
let block = this.node.getChildByName("Block").children[this.node.getChildByName("Block").children.length-1];
cc.tween(block)
.to(0.7,{x:0})
.start();
this.tipHide("tip2",3,false);
}
else if(type == 3){
if(revive == true){
this.round += 1;
this.careteGuideBlock(3);
}
else{
let tip = this.Tip.getChildByName("tip3");
this.tipShow(tip,type,false);
setTimeout(() => {
this.tipHide("tip3",null,false);
this.round += 1;
this.careteGuideBlock(3);
}, 3000);
}
}
else if(type == 4){
this.round += 1;
this.careteGuideBlock(4);
}
else if(type == 5){
this.round += 1;
this.careteGuideBlock(5);
}
else if(type == 6){
let block = this.node.getChildByName("Block").children[this.node.getChildByName("Block").children.length-1];
cc.tween(block)
.to(0.7,{x:0})
.start();
this.tipHide("tip4",7,revive);
}
else if(type == 7){
if(revive == true){
this.round += 1;
this.careteGuideBlock(7);
}
else{
let tip = this.Tip.getChildByName("tip5");
this.tipShow(tip,type,false);
setTimeout(() => {
this.tipHide("tip5",null,revive);
this.round += 1;
this.careteGuideBlock(7);
}, 2000);
}
}
else if(type == 8){
this.round += 1;
this.careteGuideBlock(8);
}
else if(type == 9){
this.Player.getComponent("Player").jumpPause = true;
let tip = this.Tip.getChildByName("tip6");
setTimeout(() => {
this.tipShow(tip,type,false);
}, 1000);
}
}
tipShow(tipName,type,showNext){
let tip = tipName;
let left = this.Tip.getChildByName("left");
let right = this.Tip.getChildByName("right");
left.width = 0; right.width = 0;tip.opacity = 0;
cc.tween(left)
.to(0.25,{width:348})
.start();
cc.tween(right)
.to(0.25,{width:348})
.start();
cc.tween(tip)
.delay(0.15)
.to(0.15,{opacity:255})
.call(() =>{
this.guide = type;
if(type == 5) this.guide = 6;
if(type == 5 || type == 1 ) this.Player.getComponent("Player").jumpPause = false;
})
.start();
if(showNext == true){
this.Tip.getChildByName("btn_next").active = true;
this.Tip.getChildByName("btn_jump").active = true;
cc.tween(this.Tip.getChildByName("btn_next"))
.delay(0.5)
.to(0.2,{opacity:255})
.start();
cc.tween(this.Tip.getChildByName("btn_jump"))
.delay(0.5)
.to(0.2,{opacity:255})
.start();
}
if(tip.name == "tip6"){
this.Tip.getChildByName("btn_start").active = true;
cc.tween(this.Tip.getChildByName("btn_start"))
.delay(1)
.to(0.2,{opacity:255})
.start();
}
}
//隐藏
tipHide(tipName,num,revive){
let tip = this.Tip.getChildByName(tipName);
let left = this.Tip.getChildByName("left");
let right = this.Tip.getChildByName("right");
cc.tween(left)
.delay(0.1)
.to(0.25,{width:0})
.start();
cc.tween(right)
.delay(0.1)
.to(0.25,{width:0})
.start();
cc.tween(tip)
.to(0.12,{opacity:0})
.delay(1.5)
.call(() =>{
if(tip.name != "tip3" && tipName != "tip5"){
this.Player.getComponent("Player").jumpPause = true;
}
if(num != null){
this.startGuide(num,revive);
}
})
.start();
}
careteGuideBlock(type){
this.Ground.active = false;
let tip = this.Tip.getChildByName("tip2");
if(type == 5){
tip = this.Tip.getChildByName("tip4");
}
this.Player.getComponent("Player").jumpPause = true;
var block = cc.instantiate(this.blockPrefab[13]);
let height = this.Player.getComponent("Player").basicHeight + GameData._instance.GM_INFO.blockMin;
if(type > 4){
height += block.height + GameData._instance.GM_INFO.blockMax;
GameData._instance.CLICK_DATA.height = true;
}
block.setPosition(cc.v2(this.round%2==0?480:-480,height));
block.parent = this.node.getChildByName("Block");
let num = 150;
let time =3;
if(type == 1 || type == 5){
num = this.round%2==0?num:-num;
}
else if(type == 3 || type == 4 || type ==7 || type == 8 || type == 9){
this.Player.getComponent("Player").jumpPause = false;
num = -block.x;
time = 7;
}
cc.tween(block)
.to(time,{x:num})
.call(() =>{
if(type == 1 || type == 5){
if(type == 1) this.Player.getComponent("Player").jumpPause = true;
this.tipShow(tip,type,false);
}
})
.start();
}
showGround(tempY){
setTimeout(() => {
this.Ground.active = true;
this.Ground.y = tempY;
}, 500);
}
guideStart(){
this.tipHide("tip6",null,false);
this.Tip.getChildByName("btn_next").active = false;
this.Tip.getChildByName("btn_jump").active = false;
this.Tip.getChildByName("btn_start").active = false;
GameData._instance.GM_INFO.probation = false;
this.destroyBlock(false);
this.onDestroy();
cc.director.loadScene("GameScene");
}
//下一步
guideNext(){
if(this.guide == -1){
this.tipHide("tip",0,false);
this.Tip.getChildByName("btn_next").active = false;
this.Tip.getChildByName("btn_jump").active = false;
this.Tip.getChildByName("btn_start").active = false;
}
}
//跳过
guideJump(){
this.Tip.getChildByName("btn_next").active = false;
this.Tip.getChildByName("btn_jump").active = false;
this.Tip.getChildByName("btn_start").active = false;
GameData._instance.GM_INFO.probation = false;
this.destroyBlock(false);
this.onDestroy();
cc.director.loadScene("GameScene");
}
jump(){
this.Player.getComponent("Player").jump();
}
startGame(){
this.createBlock();
// this.createAir();
}
addScore(score){
GameData._instance.CLICK_DATA.getScore = parseInt(score);
GameManager._instance.score += parseInt(score);
GameData._instance.CLICK_DATA.totalScore = GameManager._instance.score;
this.topUI.getChildByName("nandu").getComponent(cc.Label).string = GameManager._instance.score + "";
var scale = GameManager._instance.score/GameData._instance.LEVEL_INFO.scoreMax;
cc.tween(this.topUI.getChildByName("progress").getComponent(cc.Sprite))
.to(0.5,{fillRange:scale})
.call(() =>{
if(scale >= GameData._instance.LEVEL_INFO.star1 && !this.topUI.getChildByName("star1").active){
this.topUI.getChildByName("star1").active = true;
}
if(scale >= GameData._instance.LEVEL_INFO.star2 && !this.topUI.getChildByName("star2").active){
this.topUI.getChildByName("star2").active = true;
}
if(scale >= GameData._instance.LEVEL_INFO.star3 && !this.topUI.getChildByName("star3").active){
this.topUI.getChildByName("star3").active = true;
// GameData._instance.scoreMax = 150000;
}
})
.start();
}
createBlock(){
if(this.over == false && this.begin == true){
this.Ground.active = false;
this.Player.getComponent("Player").jumpPause = false;
var num = Math.floor(Math.random()*12);
if(this.round <= 10 && num == 5){
num = Math.floor(Math.random()*6 + 6);
}
var block = cc.instantiate(this.blockPrefab[num]);
let height = this.Player.getComponent("Player").basicHeight + GameData._instance.GM_INFO.blockMin;
if(num > GameData._instance.GM_INFO.blockScale){
height += block.height + GameData._instance.GM_INFO.blockMax;
GameData._instance.CLICK_DATA.height = true;
}
if(height >= 0 && this.cameraMove == false){
this.countHeight = this.Player.getComponent("Player").basicHeight - this.Camera.node.y;
this.cameraMove = true;
}
block.setPosition(cc.v2(this.round%2==0?480:-480,height));
block.parent = this.node.getChildByName("Block");
block.zIndex = 10;
this.block = null;
this.block = block;
this.round += 1;
this.level += 1;
if(this.round > GameData._instance.GM_INFO.levelMax) GameData._instance.GM_INFO.levelMax = this.round;
GameData._instance.CLICK_DATA.level = this.round;
GameData._instance.CLICK_DATA.round = this.level;
GameData._instance.LEVEL_INFO.layer += GameData._instance.LEVEL_INFO.layerAdd;
if(GameData._instance.LEVEL_INFO.speed<2)GameData._instance.LEVEL_INFO.speed += GameData._instance.LEVEL_INFO.addSpeed;
if(GameData._instance.LEVEL_INFO.reduceSpeed <= 100)
GameData._instance.LEVEL_INFO.reduceSpeed += GameData._instance.LEVEL_INFO.jiansu;
if(this.round == GameData._instance.LEVEL_INFO.round1) GameData._instance.LEVEL_INFO.jiansu = 2;
else if(this.round == GameData._instance.LEVEL_INFO.round2) GameData._instance.LEVEL_INFO.jiansu = 1;
else if(this.round == GameData._instance.LEVEL_INFO.round3) GameData._instance.LEVEL_INFO.jiansu = 0.5;
}
}
//产生空气
createAir(){
for(let i=0; i<100;i++){
this.Ground.active = false;
var num = Math.floor(Math.random()*12);
if(this.round <= 10 && num == 5){
num = Math.floor(Math.random()*6 + 6);
}
var block = cc.instantiate(this.blockPrefab[num]);
let height = this.Player.getComponent("Player").basicHeight + GameData._instance.GM_INFO.blockMin;
if(num > GameData._instance.GM_INFO.blockScale){
height += block.height + GameData._instance.GM_INFO.blockMax;
GameData._instance.CLICK_DATA.height = true;
}
block.setPosition(cc.v2(this.round%2==0?480:-480,height));
block.parent = this.node.getChildByName("Block");
block.zIndex = 10;
this.round += 1;
this.level += 1;
if(this.round > GameData._instance.GM_INFO.levelMax) GameData._instance.GM_INFO.levelMax = this.round;
GameData._instance.CLICK_DATA.level = this.round;
GameData._instance.CLICK_DATA.round = this.level;
GameData._instance.LEVEL_INFO.layer += GameData._instance.LEVEL_INFO.layerAdd;
GameData._instance.LEVEL_INFO.speed += GameData._instance.LEVEL_INFO.addSpeed;
if(GameData._instance.LEVEL_INFO.reduceSpeed <= 80)
GameData._instance.LEVEL_INFO.reduceSpeed += GameData._instance.LEVEL_INFO.jiansu;
if(this.round == GameData._instance.LEVEL_INFO.round1) GameData._instance.LEVEL_INFO.jiansu = 2;
else if(this.round == GameData._instance.LEVEL_INFO.round2) GameData._instance.LEVEL_INFO.jiansu = 1;
else if(this.round == GameData._instance.LEVEL_INFO.round3) GameData._instance.LEVEL_INFO.jiansu = 0.5;
}
}
clearAir(){
cc.director.loadScene("GameScene");
}
//虚假碎裂块
createCrackBlock(){
this.interfere = true;
GameData._instance.CLICK_DATA.fake = this.interfere;
if(this.round > 1) this.destroyBlock(true);
if(this.over == false && this.begin == true){
var block = cc.instantiate(this.blockPrefab[12]);
let height = this.Player.getComponent("Player").basicHeight;
if(GameData._instance.CLICK_DATA.height == true){
height += block.height/2;
}
block.setPosition(cc.v2(this.round%2==0?480:-480,height));
block.parent = this.node.getChildByName("CrackBlock");
block.zIndex = 1;
}
}
destroyBlock(type){
if(type == true){
if(this.node){
if(this.node.getChildByName("CrackBlock")){
if(this.node.getChildByName("CrackBlock").children){
var block2 = this.node.getChildByName("CrackBlock").children;
for(let i=0; i<block2.length; i++){
if(block2[i]){
block2[i].getComponent("Block").hide();
}
}
}
}
}
}
else{
var block = this.node.getChildByName("Block").children;
for(let i=0; i<block.length; i++){
if(block[i]){
block[i].active = false;
}
}
}
}
xinAction(){
let xin = this.topUI.getChildByName("xin1");
if(GameData._instance.GM_INFO.life == 2) xin = this.topUI.getChildByName("xin3");
else if(GameData._instance.GM_INFO.life == 1) xin = this.topUI.getChildByName("xin2");
cc.tween(xin)
.to(0.6,{scale:1.6,opacity:0})
.call(() =>{
xin.active = false;
})
.start();
}
//死亡
getDeath(data){
if(data == true){
this.destroyBlock(false);
cc.tween(this.Player)
.to(1,{y:-500},{easing:'cubicIn'})
.call(()=>{
this.Player.getComponent("Player").init();
// this.Player.getComponent("Player").jumpPause = true;
if(this.guide > 5){
if(this.guide == 6){
this.guide = 5;
this.round = 2;
this.startGuide(5,true);
}
else{
this.round = 1;
this.startGuide(6,true);
}
}
else{
this.round = 0;
this.startGuide(3,true);
}
})
.delay(0.5)
.call(() =>{
})
.start();
}
else{
if(GameData._instance.GM_INFO.life > 0){
GameData._instance.GM_INFO.life -= 1;
this.getDevive(1);
}else{
GameData._instance.GM_INFO.life = -1;
this.getDevive(3);
}
}
}
//复活
getDevive(time){
this.round = 0;
GameData._instance.LEVEL_init();
if(this.topUI.getChildByName("star3").active == true){
// GameData._instance.LEVEL_INFO.scoreMax = 150000;
}
this.interfere = false;
GameData._instance.CLICK_DATA.fake = this.interfere;
this.destroyBlock(false);
var block2 = this.node.getChildByName("CrackBlock").children;
for(let i=0; i<block2.length; i++){
if(block2[i]){
block2[i].active = false;
}
}
// this.blockArray = [];
let actionTime = 1;
if(this.Player.y > 500){
actionTime = (this.Player.y + 500)/1000*actionTime;
}
cc.tween(this.Player)
.to(actionTime,{y:-500},{easing:'cubicIn'})
.call(()=>{
this.Player.getComponent("Player").xinAction();
})
.delay(0.5)
.call(() =>{
this.xinAction();
this.Player.getComponent("Player").init();
if(time > 1){
this.Xin.parent.active = true;
this.Xin.getComponent(cc.Sprite).fillRange = 0;
cc.tween(this.Xin.getComponent(cc.Sprite))
.to(time,{fillRange:1})
.delay(0.3)
.call(() =>{
this.Xin.parent.active = false;
})
.delay(0)
.call(() =>{
this.createBlock();
})
.start();
}
else{
setTimeout(() => {
this.createBlock();
}, (time+0.5)*1000);
}
})
.start();
}
setData(){
GameData._instance.CLICK_DATA.totalScore = GameManager._instance.score;
GameData._instance.CLICK_DATA.timer = this.countTime;
GameData._instance.CLICK_DATA.level = this.round;
GameData._instance.CLICK_DATA.round = this.level;
GameData._instance.CLICK_DATA.isAFK = GameData._instance.GM_INFO.isAFK;
//CLICK_DATA 数据处理完毕后调用上传接口 上传接口内CLICK_DATA不做改变
GameTool.setGameData();
}
//获取matchId 用于上传每次点击数据里面记录id方便查询
getMatchId (){
let matchId = cc.sys.localStorage.getItem("matchId");
if(matchId == "undifend" || matchId==null){
matchId = this.setMatchId();
}
else{
if(this.containsNanana(matchId) == true){
matchId = this.setMatchId();
}
else{
let char = parseInt(matchId[10]);
if(this.level == 1){
char += 1;
}
matchId = matchId.slice(0, 10) + char + "";
GameData._instance.GM_INFO.matchId = matchId;
cc.sys.localStorage.setItem("matchId",matchId);
}
}
return matchId;
}
//检测matchId 如果有缓存以前的nanana数据清除
containsNanana(str) {
return /na/i.test(str);
}
//重新设置MatchId
setMatchId (){
// 定义包含可用字符的字符集
const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
// 创建一个数组以保存随机字符
const uuidArray = [];
// 循环10次 生成10位的UUID
for (let i = 0; i < 10; i++) {
// 生成随机索引,范围是字符集的长度
const randomIndex = Math.floor(Math.random() * characters.length);
// 从字符集中获取随机字符
const randomChar = characters.charAt(randomIndex);
// 将字符添加到数组中
uuidArray.push(randomChar);
}
let data = uuidArray.join('') + 1 + "";
cc.sys.localStorage.setItem("matchNumber",1);
cc.sys.localStorage.setItem("matchId",data);
GameData._instance.GM_INFO.matchId = data;
return data;
}
updateCountDownTime () {
if (this.countTime > 0 && !GameData._instance.GM_INFO.probation) {
this.countTime -= 1;
this.time.string = this.getTimeMargin(this.countTime);
if(this.countTime < 5){
cc.tween(this.time.node)
.to(0.25,{scale:1.5,color:cc.color(255,0,0)})
.to(0.25,{scale:1,color:cc.color(255,255,255)})
.start()
}
if(this.countTime <= 0){
this.unschedule(this.updateCountDownTime);
this.begin = false;
this.over = true;
this.overStop();
this.setRank();
setTimeout(() => {
this.overOpen();
}, 2000);
}
}
}
//停止所有动画
overStop(){
if(this.Player.getComponent("Player").jumpAction)
this.Player.getComponent("Player").jumpAction.stop();
var block = this.node.getChildByName("Block").children;
for(let i=0; i<block.length; i++){
if(block[i]){
if(block[i].getComponent("Block").tween)
block[i].getComponent("Block").tween.stop();
}
}
var block2 = this.node.getChildByName("CrackBlock").children;
for(let i=0; i<block2.length; i++){
if(block2[i]){
if(block2[i].getComponent("Block").tween)
block2[i].getComponent("Block").tween.stop();
}
}
}
setRank(){
GameData._instance.GM_INFO.score = this.score;
GameTool.setRank();
}
overOpen(){
this.Player.active = false;
this.destroyBlock(false);
this.destroyBlock(true);
this.GameOver.active = true;
this.GameOver.getChildByName("score").getComponent(cc.Label).string = this.score + "";
this.GameOver.getChildByName("level").getComponent(cc.Label).string =
GameData._instance.GM_INFO.levelMax + "";
// this.GameOver.getChildByName("difficulty").getComponent(cc.Label).string =
// GameData._instance.GM_INFO.difficultyMax + "";
let difficulty = parseInt(this.difficultyArray/this.level*10+"");
// console.log("难度总数",this.difficultyArray,"次数",this.level,"最终",difficulty);
this.GameOver.getChildByName("difficulty").getComponent(cc.Label).string =
difficulty/10 + "";
}
backLoad(){
this.destroyBlock(false);
this.destroyBlock(true);
this.onDestroy();
cc.director.loadScene("LoadScene");
}
again(){
this.destroyBlock(false);
this.destroyBlock(true);
this.onDestroy();
cc.director.loadScene("GameScene");
}
openRank(){
cc.director.loadScene("RankScene");
}
//时间格式转换
getTimeMargin(second:number) {
let total = 0;
total = second;
let hour = 0;
hour = parseInt((total / 3600) + "");//计算整数小时数
let afterHour = total - hour * 60 * 60;//取得算出小时数后剩余的秒数
let min = parseInt((afterHour / 60)+"");//计算整数分
let m = "" + min;
if(min < 10) m = "0"+min;
let afterMin = total - hour * 60 * 60 - min * 60;//取得算出分后剩余的秒数
let miao = afterMin + "";
if(afterMin < 10) miao = "0" + afterMin;
return m + ':' + miao
}
update (dt) {
if(this.cameraMove == true && this.over == false){
this.Camera.node.y = this.Player.y - this.countHeight;
if(this.Camera.node.y <= 0) this.Camera.node.y = 0;
this.topUI.y = this.Camera.node.y + this.drop;
}
}
}