From c4e6d023886e3042dfc804f9a32a5f0c2bd7fb3e Mon Sep 17 00:00:00 2001 From: "PC-20230316NUNE\\Administrator" <2858626794@qq.com> Date: Fri, 27 Oct 2023 19:17:47 +0800 Subject: [PATCH] update --- .../assets/resources/WorldCanvas.prefab | 2 +- .../resources/config/game/GRoleAttack.json | 2 +- JisolGameCocos/assets/script/App.ts | 5 +-- .../script/battle/base/attack/GAttack.ts | 20 +++++++++-- .../battle/base/attack/GAttackBullet.ts | 12 +++++++ ...ckRemote.ts.meta => GAttackBullet.ts.meta} | 2 +- .../base/attack/GAttackParabolicRemote.ts | 34 ++++++++++++++++++ .../attack/GAttackParabolicRemote.ts.meta | 9 +++++ .../battle/base/attack/GAttackRemote.ts | 15 -------- .../assets/script/battle/base/bullet.meta | 9 +++++ .../battle/base/bullet/GBattleBase.ts.meta | 9 +++++ .../battle/base/bullet/GBattleDefault.ts.meta | 9 +++++ .../script/battle/base/bullet/GButtleBase.ts | 7 ++++ .../battle/base/bullet/GButtleBase.ts.meta | 9 +++++ .../battle/base/bullet/GButtleDefault.ts | 30 ++++++++++++++++ .../battle/base/bullet/GButtleDefault.ts.meta | 9 +++++ .../script/battle/base/role/GRoleBase.ts | 2 ++ .../battle/base/role/PVP/GRolePVPEntity.ts | 6 +--- JisolGameCocos/config/GRoleAttack.xlsx | Bin 11159 -> 11186 bytes JisolGameCocos/config/GRoleAttackBullet.xlsx | Bin 11103 -> 11113 bytes 20 files changed, 163 insertions(+), 28 deletions(-) create mode 100644 JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts rename JisolGameCocos/assets/script/battle/base/attack/{GAttackRemote.ts.meta => GAttackBullet.ts.meta} (70%) create mode 100644 JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts create mode 100644 JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts.meta delete mode 100644 JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts create mode 100644 JisolGameCocos/assets/script/battle/base/bullet.meta create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GBattleBase.ts.meta create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GBattleDefault.ts.meta create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts.meta create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts create mode 100644 JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts.meta diff --git a/JisolGameCocos/assets/resources/WorldCanvas.prefab b/JisolGameCocos/assets/resources/WorldCanvas.prefab index 21a180a0..1f4d450f 100644 --- a/JisolGameCocos/assets/resources/WorldCanvas.prefab +++ b/JisolGameCocos/assets/resources/WorldCanvas.prefab @@ -156,7 +156,7 @@ "_shutter": 7, "_iso": 0, "_screenScale": 1, - "_visibility": 1, + "_visibility": 1107296257, "_targetTexture": { "__uuid__": "a0d1e275-5512-493e-8e15-7d2db8beb48e", "__expectedType__": "cc.RenderTexture" diff --git a/JisolGameCocos/assets/resources/config/game/GRoleAttack.json b/JisolGameCocos/assets/resources/config/game/GRoleAttack.json index ef3d46fd..ea121e27 100644 --- a/JisolGameCocos/assets/resources/config/game/GRoleAttack.json +++ b/JisolGameCocos/assets/resources/config/game/GRoleAttack.json @@ -1 +1 @@ -{"10001":{"roleId":10001,"attackWay":"Normal","attackArgs":[]},"10002":{"roleId":10002,"attackWay":"Normal","attackArgs":[]},"10003":{"roleId":10003,"attackWay":"Remote","attackArgs":["20001"]}} \ No newline at end of file +{"10001":{"roleId":10001,"attackWay":"Normal","attackArgs":[]},"10002":{"roleId":10002,"attackWay":"Normal","attackArgs":[]},"10003":{"roleId":10003,"attackWay":"ParabolicRemote","attackArgs":["20001",0.4]}} \ No newline at end of file diff --git a/JisolGameCocos/assets/script/App.ts b/JisolGameCocos/assets/script/App.ts index f5f132c7..2570d5cb 100644 --- a/JisolGameCocos/assets/script/App.ts +++ b/JisolGameCocos/assets/script/App.ts @@ -24,6 +24,7 @@ import { TableGRoleAttack } from "../resources/config/ts/TableGRoleAttack"; import { SpriteFrame } from "cc"; import { TableGRoleAttackBullet } from "../resources/config/ts/TableGRoleAttackBullet"; +let IP = "localhost"; //重写UI class JNGLayer extends JNLayer{ @@ -34,7 +35,7 @@ class JNGLayer extends JNLayer{ //重写Socket class JNGSocket extends JNSocket{ public url() { - return "ws://localhost:8080/websocket"; + return `ws://${IP}:8080/websocket`; } } @@ -160,7 +161,7 @@ export const app = { event : EventDispatcher.getIns(), //通知 proto : NGameMessage.getIns(), //消息 api : axios.create({ - baseURL: "http://localhost:8080", + baseURL: `http://${IP}:8080`, }), //请求 battle : GBattleModeManager.getIns(), //战斗 config : new JNGConfig(), diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttack.ts b/JisolGameCocos/assets/script/battle/base/attack/GAttack.ts index b14daec8..4c780f5a 100644 --- a/JisolGameCocos/assets/script/battle/base/attack/GAttack.ts +++ b/JisolGameCocos/assets/script/battle/base/attack/GAttack.ts @@ -1,10 +1,24 @@ +import { Node } from "cc"; import { TableGRoleAttack } from "../../../../resources/config/ts/TableGRoleAttack"; import GRoleBase from "../role/GRoleBase"; import GAttackNormal from "./GAttackNormal"; -import GAttackRemote from "./GAttackRemote"; +import GAttackParabolicRemote from "./GAttackParabolicRemote"; +import { UITransform } from "cc"; +import GButtleBase from "../bullet/GButtleBase"; +//攻击子弹类 +export class GAttackBullet{ + //创建子弹 + static create>(GClass:{new():T},data:{}):T{ + let bulletNode = new Node(); + bulletNode.addComponent(UITransform); + let bullet = bulletNode.addComponent(GClass); + bullet.setData(data); + return bullet; + } +} //攻击方式基类 export class GAttackBase{ @@ -12,8 +26,8 @@ export class GAttackBase{ } //攻击方式 -export const GAttack:{[key:string]:new () => GAttackBase} = { +export const GAttack:{[key:string]:(new () => GAttackBase)} = { ["Normal"]:GAttackNormal, - ["Remote"]:GAttackRemote, + ["ParabolicRemote"]:GAttackParabolicRemote, } diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts b/JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts new file mode 100644 index 00000000..34da1be7 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts @@ -0,0 +1,12 @@ + + +export default class GAttackBullet { + + //创建子弹 + static create(){ + + } + +} + + diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts.meta b/JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts.meta similarity index 70% rename from JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts.meta rename to JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts.meta index 3d01f229..7e3b8f65 100644 --- a/JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts.meta +++ b/JisolGameCocos/assets/script/battle/base/attack/GAttackBullet.ts.meta @@ -2,7 +2,7 @@ "ver": "4.0.23", "importer": "typescript", "imported": true, - "uuid": "565d04ae-ff80-4b3c-ac82-97dfcce552c2", + "uuid": "13b542e0-5fa9-4b1d-bfef-8196b3b3ffd6", "files": [], "subMetas": {}, "userData": {} diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts b/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts new file mode 100644 index 00000000..79d019ad --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts @@ -0,0 +1,34 @@ +import { SpriteFrame } from "cc"; +import { TableGRoleAttack } from "../../../../resources/config/ts/TableGRoleAttack"; +import { app } from "../../../App"; +import GRoleBase from "../role/GRoleBase"; +import { GAttackBase, GAttackBullet } from "./GAttack"; +import GButtleDefault from "../bullet/GButtleDefault"; +import { size } from "cc"; +import { Size } from "cc"; +import { Vec2 } from "cc"; +import { v2 } from "cc"; +import { v3 } from "cc"; +/** + * 抛物线普攻 + */ +export default class GAttackParabolicRemote implements GAttackBase{ + + attack(role: GRoleBase<{}>, info: TableGRoleAttack): void { + //[子弹图片] + let image:SpriteFrame = app.role.bullets[info.attackArgs[0]]; + let scale:number = info.attackArgs[1] as unknown as number; + let bone = role.spine.findBone("timo5 007"); + console.log(role.spine,bone); + let bullet = GAttackBullet.create(GButtleDefault,{ + image:image, + scale:scale, + }); + role.mode.addGObject(bullet); + let world2 = role.node.worldPosition.clone().add(v3(bone.worldX,bone.worldY,0)) + bullet.node.setWorldPosition(v3(world2.x,world2.y,world2.z)) + } + +} + + diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts.meta b/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts.meta new file mode 100644 index 00000000..67c43cc2 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/attack/GAttackParabolicRemote.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "8c684f5a-84b5-4ea1-92d3-c0b70461970c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts b/JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts deleted file mode 100644 index da383266..00000000 --- a/JisolGameCocos/assets/script/battle/base/attack/GAttackRemote.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TableGRoleAttack } from "../../../../resources/config/ts/TableGRoleAttack"; -import { app } from "../../../App"; -import GRoleBase from "../role/GRoleBase"; -import { GAttackBase } from "./GAttack"; - -export default class GAttackRemote implements GAttackBase{ - - attack(role: GRoleBase<{}>, info: TableGRoleAttack): void { - console.log(app.role.bullets[info.attackArgs[0]]); - role.fsm.enemy.onHit(); - } - -} - - diff --git a/JisolGameCocos/assets/script/battle/base/bullet.meta b/JisolGameCocos/assets/script/battle/base/bullet.meta new file mode 100644 index 00000000..371abd15 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "c6ed6478-8a11-42b5-ab5a-e302055e39c2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GBattleBase.ts.meta b/JisolGameCocos/assets/script/battle/base/bullet/GBattleBase.ts.meta new file mode 100644 index 00000000..a10fd006 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GBattleBase.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "f72595ba-a0e4-4ec5-8da8-b7d531e0c3bb", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GBattleDefault.ts.meta b/JisolGameCocos/assets/script/battle/base/bullet/GBattleDefault.ts.meta new file mode 100644 index 00000000..bf36bb10 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GBattleDefault.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "894a780e-2f5c-4d98-ba20-b43dbbcff086", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts b/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts new file mode 100644 index 00000000..44892730 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts @@ -0,0 +1,7 @@ +import GObject from "../GObject"; + +//子弹基类 +export default class GButtleBase extends GObject{ + setData(data:T){} +} + diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts.meta b/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts.meta new file mode 100644 index 00000000..0f1b6cd1 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GButtleBase.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "6656486e-6c7b-42f0-900a-d6af2c05785a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts b/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts new file mode 100644 index 00000000..ed63460e --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts @@ -0,0 +1,30 @@ +import { _decorator } from "cc"; +import GButtleBase from "./GButtleBase"; +import { SpriteFrame } from "cc"; +import { Sprite } from "cc"; +import { UITransform } from "cc"; +import { size } from "cc"; +import { Size } from "cc"; +import { v3 } from "cc"; +import { Vec2 } from "cc"; +const { ccclass, property } = _decorator; + +export interface GButtleDefaultInfo{ + image:SpriteFrame;//子弹图片 + scale:number; //子弹大小 + start:Vec2; //子弹初始位置 +} + +//默认子弹类 +@ccclass("GButtleDefault") +export default class GButtleDefault extends GButtleBase{ + + setData(info:GButtleDefaultInfo){ + this.node.layer = 1; + this.node.addComponent(Sprite).spriteFrame = info.image; + this.node.scale = v3(info.scale,info.scale,0); + } + +} + + diff --git a/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts.meta b/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts.meta new file mode 100644 index 00000000..ebbffb20 --- /dev/null +++ b/JisolGameCocos/assets/script/battle/base/bullet/GButtleDefault.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "cf27345b-b08f-4897-8a2e-6be309e9d076", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts b/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts index 764839ff..ef869993 100644 --- a/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts +++ b/JisolGameCocos/assets/script/battle/base/role/GRoleBase.ts @@ -79,6 +79,8 @@ export default abstract class GRoleBase extends GObject{ this.node.removeFromParent(); return; } + + this.spine.debugBones = true; this.bind(this.role); diff --git a/JisolGameCocos/assets/script/battle/base/role/PVP/GRolePVPEntity.ts b/JisolGameCocos/assets/script/battle/base/role/PVP/GRolePVPEntity.ts index c8c9d29a..d02158ce 100644 --- a/JisolGameCocos/assets/script/battle/base/role/PVP/GRolePVPEntity.ts +++ b/JisolGameCocos/assets/script/battle/base/role/PVP/GRolePVPEntity.ts @@ -1,15 +1,10 @@ import { _decorator } from "cc"; import GRoleBase from "../GRoleBase"; -import GFSMBase from "../../fsm/GFSMBase"; import GFSMPVP from "../../fsm/PVP/GFSMPVP"; import GPVPMode, { GPVPModePlayerEnum } from "../../../modes/GPVPMode"; -import { GTactical } from "../../../entity/GTactical"; import { GFSMBattleAmin } from "../../fsm/base/GFSMBattle/GFSMBattleAmin"; import { JNFrameInfo } from "../../../../../../extensions/ngame/assets/ngame/sync/frame/JNSyncFrame"; -import { Vec2 } from "cc"; -import { v2 } from "cc"; import { ProgressBar } from "cc"; -import { GTowards } from "../../GObject"; const { ccclass, property } = _decorator; export interface GDemoMessage{ @@ -40,6 +35,7 @@ export default class GRolePVPEntity extends GRoleBase{ getClassName():string{return "GDemoMessage"} onSyncUpdate(dt: number,frame:JNFrameInfo, input?: GDemoMessage) { super.onSyncUpdate(dt,frame,input); + if(input){ if(Object.prototype.hasOwnProperty.call(input,"isAttack")){ this.fsmAnim.isAttack = input.isAttack; diff --git a/JisolGameCocos/config/GRoleAttack.xlsx b/JisolGameCocos/config/GRoleAttack.xlsx index ed62cdc69a6d58fdd3e45375d23c8b9bfbedce00..7e361a0d2b2cb59b4cc64769429406252eae0eb1 100644 GIT binary patch delta 2912 zcmZ8j2Q=JE7vEha>{?ch7A!Ve#Il0b38H3|=uyJzWmk#vgjJqcLWIAPL`g)89z6)6 zgm{stQS%5Jl4w!~%KKhP$OgX#6Ct_iZl+a~&( zSDT2YU$bo+N6l{f`@JuYRQmk~kuk%-7h4$>(S&@)ZkhnEc{OBB^#F2}7Axw7hKru8 z*bFxP+))SW9*24^7lw`KH@?qs;_{us0KN(4<}~IL?g}JQf>cj$@q4phH$K*~M9%9% zFUk^azlLlDo$em;&W%~9v?cN=1p&DQ0!&L=^NZ^{D_dWFAv@cz#(Aw}8a~L~xn*#4 z+nWe$JW5>0XkPx-()eLK;$6}mmrbc^*2A=eoYvo2IQF>cZM&}s z_`Yg9)jEdPGEvooq4&7e#pY;0AS5p^2jv1b#c4=|*3-WEx`=QGk5llL>ZfpI4d$^z zLQr8jo6+93AyG*O{5Uo!d*NGgDG!mA8;9C)A_kPM2JV(T)2?c3V{6*&U%mKcacb|v zK!eqzZ66EO%I~C;wx2b16*|I;a($tFV|x-_YgL);rwxkRhb5Dki(>EDi}$s9Vji@*{ebQoF40AUYgn(616WAX;o9>-jb-PTY}Hhi!8>LJx_AuYT0tk z)mHS!>sq9Y;^J0e3YCujOxC&ame@b>k$8PAA-Pnop z&D?|FZ<9Fw`n<7g;?(!n{LOdrY2b7mP#d8IyNX)VcwRoqJ5)}zS+${sorc_NWnBbgZGf@9Y`fqa~4F6Q35wSceeA-kWsYWbv}LQRip zN?UK^ZqLM-+~_60K~!@IWvDo*vj<{Yhc()VL0$EkUTa~w`@ZbemVYc;3}EGYV>I)+ zyADUbboy zm1*^!Ppx8kd>j!vZGvNaZeQw_Yy`sboOz`qb-#8M97RQfCR4BU`s*o;2%j6{x zaf$a~5TZzU{_@O2Erfi$hNam-&4?v3GMwcNcs`K<@<6ap!;(sf_9;3w=K7S-xg2#H zdH%KY8sk|VRcUKF{9G5y%!UVqqH2R+%+E*nJ=Lym;Mqz8NrSqD2QfOHhy1dNX21O= z#c19s*n~`fZ^h3=T98vVOQgyy<-DCa^>z?d-P~ES3XT65tKjUX)xD~jJqfOEepa%Y zK&F^5R8CKliw^IM8hksx2k~>Ib?aVo$Zqx?HD5lWWzI<%dmY6x{Bq!0w`#J&4jWlN zu_%p`Ii0K^6vJf_PsS(-i2KPEcK=t#{3Vml9RF9&WSNJol!#iYXDrKR`q>h(yN?uh z6l)oj9*x~monpL9hG=K|xx${QGrI+;kB&R(I~~C zxY^b)P3kXsf#)y#VRG>gCVrB;kvb%a_fGP26n!>Pqg-${OI&DH2xz4W2><-&0)Q-|V7s9k3ZISUeF z91~G?9t7BgA7t(mJ(1V)xJRY6_6baJcm`GFP)0nl7fWqU5}-S5b(=Tt0PDP2Jz9gS z?!{z;b9mt>adYIuX5JcfOLRa;q-dfu1FHFHdf_Ow-$Ayy zN}uw@r4LE-QzPA;ngL=ty~o@0AzsNC;S!8BH(dG&WZR^sjRVONK)BNLN}zN<_H|vP zzLTTp;D=9~wtD{8NLjFQ$+rwJP^rE&LzkV2ULn@ND8Fy<&!zGq&*9fYQk>hun(10; zR%V@g9Q68v)xs+2S~9H{-mQ50xd;468eR|*{>HuQAzsmHQ^Bz@aIbjabTLqBXU}h@ zHN1WnbJ{XfUmLf++Z9~=4wDY<$@Au~*rgob!a1rz+eoCpN3Gb)p0I&{4g%@!`d#qZfw=FNcCoFFG? z*)zl^Bo~wim*;t9HYgm25#%pm+73p;)>W`7`wJhIiZxT2&=&6OBN}Q2B- zURKV~1cw^tneeHI{AL1 zS_c6kedhrr6L)Q!pba(H1>h1<2e$(@A{g)&;Jyez|2H26#6^w4yg-LUDNq`*^vfP^-L7EUp6a~K=Y(4L`K ODHEUuf#^lfwEqC1rWT6; delta 2889 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 sE)aSjY$X2{Hq>1%x3xw7)S$fcfm|k diff --git a/JisolGameCocos/config/GRoleAttackBullet.xlsx b/JisolGameCocos/config/GRoleAttackBullet.xlsx index 6187b10b0cca9b86d66f1d81bec558f4fcfb4e0d..af1d3d96ad56dabaa439312bb3a89d6e7121fd45 100644 GIT binary patch delta 2474 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 delta 2484 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