From 22c9913ed615279ee207ef1230049c3eb284c99b Mon Sep 17 00:00:00 2001 From: k8w Date: Fri, 3 Dec 2021 00:29:22 +0800 Subject: [PATCH] Arrow --- .../backend/src/models/Room.ts | 2 +- .../backend/src/shared/game/GameSystem.ts | 16 +- .../backend/src/shared/game/gameConfig.ts | 4 +- .../src/shared/protocols/serviceProto.ts | 5 +- .../3d/{soldier.meta => javalin_weapon.meta} | 2 +- .../blue.mtl} | 2 +- .../blue.mtl.meta} | 2 +- .../assets/3d/javalin_weapon/javelin.FBX | Bin 0 -> 29840 bytes .../assets/3d/javalin_weapon/javelin.FBX.meta | 123 ++ .../yellow.mtl => javalin_weapon/red.mtl} | 20 +- .../assets/3d/javalin_weapon/red.mtl.meta | 11 + .../assets/3d/javalin_weapon/yellow.mtl | 48 + .../yellow.mtl.meta | 2 +- .../frontend/assets/3d/javelin.meta | 12 + .../3d/javelin/Materials_javelin01.meta | 12 + .../Materials_javelin01/Material #6.mtl | 35 + .../Materials_javelin01/Material #6.mtl.meta | 11 + .../frontend/assets/3d/javelin/blue.mtl | 48 + .../frontend/assets/3d/javelin/blue.mtl.meta | 11 + .../frontend/assets/3d/javelin/javelin01.FBX | Bin 0 -> 125696 bytes .../javelin01.FBX.meta} | 112 +- .../frontend/assets/3d/javelin/javelin01.jpg | Bin 0 -> 7035 bytes .../javelin01.jpg.meta} | 10 +- .../frontend/assets/3d/javelin/javelin02.jpg | Bin 0 -> 7101 bytes .../javelin02.jpg.meta} | 10 +- .../frontend/assets/3d/javelin/javelin03.jpg | Bin 0 -> 7766 bytes .../javelin03.jpg.meta} | 10 +- .../frontend/assets/3d/javelin/red.mtl | 48 + .../frontend/assets/3d/javelin/red.mtl.meta | 11 + .../frontend/assets/3d/javelin/yellow.mtl | 48 + .../assets/3d/javelin/yellow.mtl.meta | 11 + .../frontend/assets/3d/map/newMap01.FBX.meta | 97 +- .../frontend/assets/3d/map/newMap01.jpg.meta | 29 +- .../frontend/assets/3d/map/newMap01.mtl | 2 +- .../frontend/assets/3d/map/newMap01.mtl.meta | 2 +- .../frontend/assets/3d/soldier/soldier01.FBX | Bin 173376 -> 0 bytes .../frontend/assets/3d/soldier/soldier01.jpg | Bin 7048 -> 0 bytes .../frontend/assets/3d/soldier/soldier02.jpg | Bin 6145 -> 0 bytes .../frontend/assets/3d/soldier/soldier03.jpg | Bin 6534 -> 0 bytes .../frontend/assets/prefabs/Arrow.meta | 12 + .../assets/prefabs/Arrow/Arrow.prefab | 303 +++++ .../assets/prefabs/Arrow/Arrow.prefab.meta | 13 + .../frontend/assets/prefabs/Arrow/Arrow.ts | 43 + .../assets/prefabs/Arrow/Arrow.ts.meta | 9 + .../assets/prefabs/Player/Player.prefab | 1054 +++-------------- .../frontend/assets/prefabs/Player/Player.ts | 38 +- .../assets/scenes/GameScene/GameScene.scene | 673 ++++++++--- .../assets/scenes/GameScene/GameScene.ts | 46 +- .../assets/scripts/components/FollowCamera.ts | 4 +- .../assets/scripts/models/GameManager.ts | 1 - 50 files changed, 1762 insertions(+), 1190 deletions(-) rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier.meta => javalin_weapon.meta} (77%) rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/mat_soldier.mtl => javalin_weapon/blue.mtl} (89%) rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/mat_soldier.mtl.meta => javalin_weapon/blue.mtl.meta} (72%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX.meta rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/yellow.mtl => javalin_weapon/red.mtl} (52%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier => javalin_weapon}/yellow.mtl.meta (72%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.FBX rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/soldier01.FBX.meta => javelin/javelin01.FBX.meta} (73%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.jpg rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/soldier01.jpg.meta => javelin/javelin01.jpg.meta} (70%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/soldier02.jpg.meta => javelin/javelin02.jpg.meta} (70%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg rename examples/cocos-creator-multiplayer/frontend/assets/3d/{soldier/soldier03.jpg.meta => javelin/javelin03.jpg.meta} (70%) create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl.meta delete mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX delete mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg delete mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg delete mode 100644 examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/prefabs/Arrow.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/prefabs/Arrow/Arrow.prefab create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/prefabs/Arrow/Arrow.prefab.meta create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/prefabs/Arrow/Arrow.ts create mode 100644 examples/cocos-creator-multiplayer/frontend/assets/prefabs/Arrow/Arrow.ts.meta diff --git a/examples/cocos-creator-multiplayer/backend/src/models/Room.ts b/examples/cocos-creator-multiplayer/backend/src/models/Room.ts index 3937a64..3e6b1b0 100644 --- a/examples/cocos-creator-multiplayer/backend/src/models/Room.ts +++ b/examples/cocos-creator-multiplayer/backend/src/models/Room.ts @@ -68,7 +68,7 @@ export class Room { }); // TimePast - let now = process.uptime(); + let now = process.uptime() * 1000; this.applyInput({ type: 'TimePast', dt: now - (this.lastSyncTime ?? now) diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/game/GameSystem.ts b/examples/cocos-creator-multiplayer/backend/src/shared/game/GameSystem.ts index 2c4bba0..6a4621a 100644 --- a/examples/cocos-creator-multiplayer/backend/src/shared/game/GameSystem.ts +++ b/examples/cocos-creator-multiplayer/backend/src/shared/game/GameSystem.ts @@ -5,7 +5,7 @@ import { PlayerState } from "./state/PlayerState"; export interface GameSystemState { now: number, players: PlayerState[], - arrow: ArrowState[], + arrows: ArrowState[], nextArrowId: number } @@ -15,7 +15,7 @@ export class GameSystem { private _state: GameSystemState = { now: 0, players: [], - arrow: [], + arrows: [], nextArrowId: 1 } get state(): Readonly { @@ -43,7 +43,7 @@ export class GameSystem { else if (input.type === 'PlayerAttack') { let player = this._state.players.find(v => v.id === input.playerId); if (player) { - this._state.arrow.push({ + this._state.arrows.push({ id: this._state.nextArrowId++, fromPlayerId: input.playerId, startPos: { ...player.pos }, @@ -69,11 +69,16 @@ export class GameSystem { this._state.now += input.dt; // 落地的 Arrow - for (let i = this._state.arrow.length - 1; i > -1; --i) { - let arrow = this._state.arrow[i]; + for (let i = this._state.arrows.length - 1; i > -1; --i) { + let arrow = this._state.arrows[i]; if (arrow.targetTime <= this._state.now) { // 伤害判定 let damagedPlayers = this._state.players.filter(v => { + // 不能伤害自己 + if (v.id === arrow.fromPlayerId) { + return false; + } + return (v.pos.x - arrow.targetPos.x) * (v.pos.x - arrow.targetPos.x) + (v.pos.y - arrow.targetPos.y) * (v.pos.y - arrow.targetPos.y) <= gameConfig.arrowDistance * gameConfig.arrowDistance }); damagedPlayers.forEach(p => { @@ -86,6 +91,7 @@ export class GameSystem { toPlayerId: p.id })) }) + this._state.arrows.splice(i, 1); } } } diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/game/gameConfig.ts b/examples/cocos-creator-multiplayer/backend/src/shared/game/gameConfig.ts index 4068dfd..9f6b124 100644 --- a/examples/cocos-creator-multiplayer/backend/src/shared/game/gameConfig.ts +++ b/examples/cocos-creator-multiplayer/backend/src/shared/game/gameConfig.ts @@ -8,7 +8,7 @@ export const gameConfig = { moveSpeed: 10, - arrowFlyTime: 1000, - arrowDistance: 2, + arrowFlyTime: 500, + arrowDistance: 7, arrowDizzyTime: 1000 } \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts index fc9b4ff..cf61964 100644 --- a/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts +++ b/examples/cocos-creator-multiplayer/backend/src/shared/protocols/serviceProto.ts @@ -17,6 +17,7 @@ export interface ServiceType { } export const serviceProto: ServiceProto = { + "version": 1, "services": [ { "id": 0, @@ -227,8 +228,8 @@ export const serviceProto: ServiceProto = { } }, { - "id": 2, - "name": "arrow", + "id": 4, + "name": "arrows", "type": { "type": "Array", "elementType": { diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon.meta similarity index 77% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon.meta index 4058be8..4457476 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon.meta @@ -2,7 +2,7 @@ "ver": "1.1.0", "importer": "directory", "imported": true, - "uuid": "b62bf789-093f-4583-8530-86e00cd8a2a6", + "uuid": "d739d6a2-6087-4eb8-992d-7782bb91ca03", "files": [], "subMetas": {}, "userData": { diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl similarity index 89% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl index e7a8289..d3ed79a 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl @@ -27,7 +27,7 @@ "_props": [ { "mainTexture": { - "__uuid__": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "__uuid__": "81f16ace-2b57-44c3-804d-c192ed53aaee@6c48a", "__expectedType__": "cc.Texture2D" } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl.meta similarity index 72% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl.meta index 1e1c27c..89cf9c3 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/mat_soldier.mtl.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/blue.mtl.meta @@ -2,7 +2,7 @@ "ver": "1.0.9", "importer": "material", "imported": true, - "uuid": "5cf1ff47-b589-490a-bc78-a88f743b9798", + "uuid": "034d148f-998d-453d-baed-7ebbea501d20", "files": [ ".json" ], diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX new file mode 100644 index 0000000000000000000000000000000000000000..351926faf6f0cefe078375c44010bb134faad3a6 GIT binary patch literal 29840 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 Cv7ycY literal 0 HcmV?d00001 diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX.meta new file mode 100644 index 0000000..db5df03 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/javelin.FBX.meta @@ -0,0 +1,123 @@ +{ + "ver": "2.1.4", + "importer": "fbx", + "imported": true, + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c", + "files": [], + "subMetas": { + "035c0": { + "importer": "gltf-mesh", + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c@035c0", + "displayName": "", + "id": "035c0", + "name": "对象001.mesh", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.1.0", + "imported": true, + "files": [ + ".bin", + ".json" + ], + "subMetas": {} + }, + "1cdc4": { + "importer": "gltf-embeded-image", + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c@1cdc4", + "displayName": "", + "id": "1cdc4", + "name": "贴图 #3.image", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.3", + "imported": true, + "files": [ + ".png", + ".json" + ], + "subMetas": {} + }, + "bfae8": { + "importer": "texture", + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c@bfae8", + "displayName": "", + "id": "bfae8", + "name": "贴图 #3.texture", + "userData": { + "wrapModeS": "repeat", + "wrapModeT": "repeat", + "minfilter": "linear", + "magfilter": "linear", + "mipfilter": "none", + "anisotropy": 0, + "isUuid": true, + "imageUuidOrDatabaseUri": "401c28d6-3085-4209-9f2e-3aff6da5855c@1cdc4" + }, + "ver": "1.0.21", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "b1faf": { + "importer": "gltf-material", + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c@b1faf", + "displayName": "", + "id": "b1faf", + "name": "Material #3.material", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.14", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + }, + "5c1a1": { + "importer": "gltf-scene", + "uuid": "401c28d6-3085-4209-9f2e-3aff6da5855c@5c1a1", + "displayName": "", + "id": "5c1a1", + "name": "javelin.prefab", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.0.12", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} + } + }, + "userData": { + "imageMetas": [ + { + "name": "贴图 #3", + "uri": "401c28d6-3085-4209-9f2e-3aff6da5855c@1cdc4" + } + ], + "redirect": "401c28d6-3085-4209-9f2e-3aff6da5855c@5c1a1", + "assetFinder": { + "meshes": [ + "401c28d6-3085-4209-9f2e-3aff6da5855c@035c0" + ], + "skeletons": [], + "textures": [ + "401c28d6-3085-4209-9f2e-3aff6da5855c@bfae8" + ], + "materials": [ + "401c28d6-3085-4209-9f2e-3aff6da5855c@b1faf" + ], + "scenes": [ + "401c28d6-3085-4209-9f2e-3aff6da5855c@5c1a1" + ] + }, + "legacyFbxImporter": true + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl similarity index 52% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl index 9b85b72..8818585 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl @@ -4,34 +4,32 @@ "_objFlags": 0, "_native": "", "_effectAsset": { - "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319" + "__uuid__": "a3cd009f-0ab0-420d-9278-b9fdab939bbc", + "__expectedType__": "cc.EffectAsset" }, "_techIdx": 0, "_defines": [ { - "USE_SKINNING": 2, - "USE_ALBEDO_MAP": true + "USE_TEXTURE": true } ], "_states": [ { + "rasterizerState": {}, + "depthStencilState": {}, "blendState": { "targets": [ {} ] - }, - "depthStencilState": {}, - "rasterizerState": {} + } } ], "_props": [ { - "alphaThreshold": 0, - "roughness": 0.70710676908493, - "metallic": 0.400000005960464, "mainTexture": { - "__uuid__": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a" + "__uuid__": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84@6c48a", + "__expectedType__": "cc.Texture2D" } } ] -} +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl.meta new file mode 100644 index 0000000..f0802cf --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/red.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "5d9da4c3-349b-4309-8efe-7c16bffd5ed4", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl new file mode 100644 index 0000000..b8f2da7 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.333333402872086, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "00463b4b-2098-43bf-ab0f-75d68a7b19aa@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl.meta similarity index 72% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl.meta index a407fcd..93e4645 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/yellow.mtl.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javalin_weapon/yellow.mtl.meta @@ -2,7 +2,7 @@ "ver": "1.0.9", "importer": "material", "imported": true, - "uuid": "5620e8a2-444d-4e80-9eb8-f6f54bd4d3cf", + "uuid": "75328980-c98c-4c02-ab3d-180696f319a0", "files": [ ".json" ], diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin.meta new file mode 100644 index 0000000..bec29ee --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "ec996a75-19b5-4c0c-a9cd-f493a945a73e", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01.meta new file mode 100644 index 0000000..5d77048 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.0", + "importer": "directory", + "imported": true, + "uuid": "9ca73d01-a6f2-4dc2-b7d7-658d9d101d8c", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl new file mode 100644 index 0000000..d3ed79a --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl @@ -0,0 +1,35 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "a3cd009f-0ab0-420d-9278-b9fdab939bbc", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_TEXTURE": true + } + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + } + ], + "_props": [ + { + "mainTexture": { + "__uuid__": "81f16ace-2b57-44c3-804d-c192ed53aaee@6c48a", + "__expectedType__": "cc.Texture2D" + } + } + ] +} \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl.meta new file mode 100644 index 0000000..00d5ea2 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/Materials_javelin01/Material #6.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "196eebe8-170f-4ba9-a767-9f6d664c6e04", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl new file mode 100644 index 0000000..c0a81dc --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.30360022187233, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "81f16ace-2b57-44c3-804d-c192ed53aaee@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl.meta new file mode 100644 index 0000000..b709d76 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/blue.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "c2e9d35e-0f85-4427-9368-096fe7b303d6", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.FBX b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.FBX new file mode 100644 index 0000000000000000000000000000000000000000..f86564777a7b2d4ab81ded43dd0dca63e63b07a2 GIT binary patch literal 125696 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 Mct>yM#>Mpi1D}C?Z~y=R literal 0 HcmV?d00001 diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.jpg.meta similarity index 70% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.jpg.meta index 7007391..a3aacd5 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin01.jpg.meta @@ -2,7 +2,7 @@ "ver": "1.0.21", "importer": "image", "imported": true, - "uuid": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa", + "uuid": "81f16ace-2b57-44c3-804d-c192ed53aaee", "files": [ ".jpg", ".json" @@ -11,7 +11,7 @@ "6c48a": { "ver": "1.0.21", "importer": "texture", - "uuid": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "uuid": "81f16ace-2b57-44c3-804d-c192ed53aaee@6c48a", "imported": true, "files": [ ".json" @@ -26,16 +26,16 @@ "premultiplyAlpha": false, "anisotropy": 0, "isUuid": true, - "imageUuidOrDatabaseUri": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa" + "imageUuidOrDatabaseUri": "81f16ace-2b57-44c3-804d-c192ed53aaee" }, - "displayName": "soldier01", + "displayName": "javelin01", "id": "6c48a", "name": "texture" } }, "userData": { "type": "texture", - "redirect": "e90ad74a-b668-4e2c-bf91-51a2a91b02aa@6c48a", + "redirect": "81f16ace-2b57-44c3-804d-c192ed53aaee@6c48a", "hasAlpha": false } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6185c7e6004c54adb677f5cf3e73d731e9d13233 GIT binary patch literal 7101 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 literal 0 HcmV?d00001 diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg.meta similarity index 70% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg.meta index 5fbe7f7..ad2c95a 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin02.jpg.meta @@ -2,7 +2,7 @@ "ver": "1.0.21", "importer": "image", "imported": true, - "uuid": "f35bcb71-cd72-443c-94a9-5482c2d63d66", + "uuid": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84", "files": [ ".jpg", ".json" @@ -11,7 +11,7 @@ "6c48a": { "ver": "1.0.21", "importer": "texture", - "uuid": "f35bcb71-cd72-443c-94a9-5482c2d63d66@6c48a", + "uuid": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84@6c48a", "imported": true, "files": [ ".json" @@ -26,16 +26,16 @@ "premultiplyAlpha": false, "anisotropy": 0, "isUuid": true, - "imageUuidOrDatabaseUri": "f35bcb71-cd72-443c-94a9-5482c2d63d66" + "imageUuidOrDatabaseUri": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84" }, - "displayName": "soldier02", + "displayName": "javelin02", "id": "6c48a", "name": "texture" } }, "userData": { "type": "texture", - "redirect": "f35bcb71-cd72-443c-94a9-5482c2d63d66@6c48a", + "redirect": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84@6c48a", "hasAlpha": false } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eee1aca9bc26921a8fe9008170708c60095eb91f GIT binary patch literal 7766 zcmaKRWk6J0*Zv=h(jgC#3jX`k|IzEn7BL)D$Vsbfv>z_o$kX-)HVP1b;T)y|4z!^-(S>U zQWS%A7K6&m%ZrIih)GC@Txp1S2YUD*0z^E#dH%7Wj`ViKqC9<27!R&L77-2@Umr#A zRiyt(0qv=;|F7ZyS}ipCPhNj%d;6Fm|2K^Ps_ktS=!q0FL3(3+v5v?qb)J8~SGD`U z9sNdN=uSgHRL3sb`)5k45K83yD2PZt=uV0Up{r_2N~+7qT;&aw zlhIVWO8Y-pr~gv6zp)bkU#!?wFk*lDJtE1DraprjX$GEZ`Y{ob(S}t>o0?WaQMel;q@;v~)Byv@|qyKfGkYRAP|U| z=?|QZjhmZ`oBLlp|L+a}kQ@*K2q7W>0|8olm;d#-tLLmL0vHuJAhfF|Dh|B03bJ%o>+x}#2DcPmWVTn$AfZeRCyRfM;)-HW}Qn<5_tJYf6oA@iLL?# z5&;290Awm5;9KRw1)^reyoEya&}IZqW41nIouRce>d-&#k6YD3kIN?F!m>g6Nd(iN z=@(|NewE;U12#V?_8xH7KHkez`SCFyYU2*K{N?=%`7a-OiLnsfY#f4JjZT5-3j z?=t`L^G+|~SSquE`~3@g`aCUklE_*Z(kIS_MjFo_tE5FWVoRQZf0Kht2?7kY+S=M z)unkkXI?hZg;X!bV#^spsa=!GIww*?$$Vhfbp7LDp&BzZ;$6AWT8LY{<0hJjaA7^F zMs7!LPp+v%$a)&B!!HpAH-YypJBQ7%p*y|paEVO^BP+r!xYuM+PxWI-Jwn4G(%MbG zzLUK!{a&kIoys*(@nGsbYOv^kzmlzH)#SmK2t}yWX3{ z@gU_bu7-^JL1}Usx;ASL{2LJNb^?tEC1@z<&FMpTrxmy$>x-`^mOzLdj2`$^{RZ6l z4QP1W(r0VP%8{5Tzr~e27-dG>Hc$E^yFup|-Rt%Bo#h4p&+hY*6))WG4T{o2Nrsx` zaft%nJ5Cc)Ra13+AEIxIsA&tz+>z4e{TXaa5+q(V3QIZJST;<1wUu+)Hkj)O75Z^h z7kAfW=yLttj!)M?JZG;CcgNV+YQOg=x`^HQFpcJE`AWOS*4d(g7#`RF6Zxj%F2ZL{P#T>*MK5xjVti_ga>sCtMaWH+1V{fw z*^>KRJ>#*a5|cpO-KL4kk=F^|W><`{>~Ql}{}8r@WVLkaY9buwtA>=D_V< z#kJ;dhSi>8MqLrlb4aJjsp66XDHDu`?&LstkebYuUa#-ZL)PQ-7y0mDCVb5_G!^JK#tdN=W7E2(^`(pM?|L2_G zs{RK}t>Jrj) zfo4AqCVD(?ayKZ6V4mzC`SJr37m-q|ZmZqTKe++(bj)3+H~K0zTYKiwNexWC0J!g% zv;3(!MV>%65b?e%N=ERgP5m;QWq(@!ka3SAXlhnr)v(EHrTzZKfMt`HUy=?5IFdtq zI!f#r@5RVoVrC)F!?ay4g~s~;>k92)l`Vy?Sjy!gTs?lXo=;;0d5vNSIhPb z4z>!2ZS-F9xKX7I%JcDBM1MtizvF3t6dpF~#uv z#}+7v?viY*YkMY%^eJ>jm?Q?#Ws_MD6O!MYPvTv&upxbdn-lhF^vAF?sPD(v<2d)@uT@sZJgiH(^b-<@nVZOGs*UrV6yMe!*y4 z>uUwSLpZfj^ykhLC&ps&4$6niv#IRx=~UN&X%>QqO(>iBhR+x~p0E&0)|t{`Z2Gml zrahyt@0TJc_Qs_0M1<+APR`BPNWq_}f?cafduXsCjrc}|8SXx1WupP*4$X0VYtq=u zviW$<3qi2H^`}`k+5-L91Z&V(J?$U|(Nni3PF;`I`e&kqB0CbRiLfVG)j7G|_X}M; z`yN#`d~EHCVO#j@tMX%yV^doPn;6D1$hi3aI&WF#-lvBy%rV+2*UnZxoIBrmzv#ZL zp}pF^cK3#1`=XjOV@yOugB}v!$X(xxP242uvohy!ch5FP!%t{g-LD;00PP+Wr6*<= z?{iZMz-Pyyw=(668sIf5#xnEL)SAPJj5@w>n=SsR5QDqUpkM{mE4N5aXIyfpk%CNF zQjH?tWq88&C_qixlFi15d_sa{0sEF(gYg*$yWA;=@PKDd zM;IObnfu1xmgU#5H1sCBp929&_;OyW4qC4tIYoCQN?oQJ?^mFF&@S!-gl4xp2D`R+VXJH?KtOJ>ko{2D8x?&^zEfWQ0Z^S`uBSpr@lAu;N4^SlTrJg)BzuI5X81w7Ko`T+F{b6r zI`kN)<(VwHri-Pf9uUK>m6wK zZ$L$uhpSZnVa5(DHe;aDuC?i2cR(Yn*Gvl2EcEk!j;O@e9Vu&&U=n4li>BZ%<$GMT zj=EJFtUM_%c=%F-&%MjG3!PbhTV@8c_zz=QV zQ6ppTuVwS0000vi0{!u&S9GZF&c|BLtKUwb{Xb{M=#8U)c1hC5(--vmu77%4I+Kv( zN^JT3md9z}?F+OXP4WfML$zxEmcC0Ln>wzIUm^f6({ezjqY|!U2ol|etcps#Mst+o zDi*B{pZ9R9)@x|<055e6eOxfRRhX>n+eV8kRGSF67ggF;x(T_7c}5r|Xq@v*v?mA0 zimtR8PK;j9H#ghm3@^IgSGWtFMNcJLrK+|v$#%aSVa$|@-t)DgCUJ9r=-s9s9DXD6 z&NJtJM(&1BzH4&Z-?4()7}SEdPQ>P?g7H(ck<&H{Bfbo~9^VB*EBQEqJt6`Em9?cVvp(GXkN9oVJu zV>;V92qO2*@xFnHqOjcQu7+vyw$!zYly(fj=ww5k?af>G7`}?kK#?;HhM1q$dlF}o zeAh(f&RLE&V`mi*{c+w$|3pEgq%Tl$sh-y?eh`09bY$YiFNx{Mx*WNC_lItKV+iy1 zdht{4?1^=6G;Dh3rf#!qLXyoyH;1R`b9u9^k8R0c)a-g6xR5XMb>kkv74weVUUYdh zYQ`p~WgN1hxoPt006LmxG4n+9?}+F`*MD}RO2M*mH?}#acX>ICnm5n*fr31-oQ%84 z+3ZSeVZ2V--*O#}0&bi?{SA-{{v5YmEcD{BAA(Q2nf80eflr!Z>k9g4Ibng}n*pbiwtndYn|#S+Jz1km z{uQpt@ZvqWi-#Xf@7@2%^cx`RE&fFxC01)^M9J;YOdo1qoWCQ*a()-I%YeYsA74s* zr)k(6v-9d23!Nx{+~X)#RkhXP==0}r{vPuzI4Me#o`KzZRKOYO-uF5*OcEo+%|$1w z#ANp4V^j-09AG=aiBf#Z9d2|jgHJUa$m#9#>d{1_O@?oHZqrwFOF2kkd@|nDo=jAb zO#keDteMZ{v3AMDhU~SIv(YUKl~M@&azm-H2OTZGvx-8@VBpBH4PZKTyl&3WeOL*R z&Kx7n0*!PGk-q>fg)t?0v6Xccs;#*epBXTE2D3l#ZuGtWO>swB8AEI*M?1uc6BN`b*y@iZjcF zD=jJb=SvXfHlwdx<)JOlXkHiEuQV2jK(_{BN~&ojGkJR-P<4&O`aBe=XTKxbY1 z1IKkS79X=l`og*7PV~JTNAO938f0bk0)X$Z@rN{jQF1#zH69VOVWYeB2~uF|xL?)P}VjAnTKhbKpQj>HX)8u1u;w(4 zb)iP@wT%_@-B#u14V*=Y3v@Tx1}}WQ8qUn!MbRl#lczM+-m6*OguOJ%xRI6=_UBR0 z@;AI5CK76PC;4QM2R1swnhx1b4P~%RGd<*TjLDKb>YTd8B(XQd$-o+L(|eOL@@#nY zuzF zACVe2A8}S@$ct-v`R2A`BkPxm2#uBnjCWj|OyRJ4c}(hr`P-aT^z{YEcm6jlymMOe zuT(>dfj3MO5HF~fweuo`#7!ETyB9v2bBo%1nT~mGJ|cvjed*X_@kLuFk%mI`C1Mj{ zX2lI4TW0t8`0AG*t@W`+%Q^d$f5=v$ZDNTV`5m-?ZjmJV6HPuiiJx;ZImq#g_T|dH z!}A%^*&|Aie9NSUA(uSl`VEUrTQLg`<}n`|f$Agn*|tQRF~5_wRofY>XP2KJ zJcsiHWcfoZP0Hn=*Mz9pNM3e}Yc$Dzzs~rf*uH*YS(5QZ_f3o0&fyVQ64A7YL`V{* zw7S7>j9L}h->9(G240n_p2dQ!g@{2D^5a5{)O8OeYAPjTy2T_e;sXszMjT8kS>rWF zZTSN-sTYnlYJU~>1>?#kg)xwlRoJbO+@=b`+Y`7;blYY!gx3jeTv!knHl{EKWy+0p z9p4Ly6&3ECWc_r8#v(M`zDUeGHgkNmTja+Qwy!})UMHFe+Tr)VwhgUm-HXzVuq*{d z(RnB1v)|Mbe(>`DPI2%XP&FUSuwH;oxhUDK2CI#FDAV(tYYe%-dzD3E}oC$#A>y_@vt(OXvt z7`bk;3X9WBS4>Vb>_FC!3J?`LR2Ai4jCC>cW{g-Tujp*)8aNwnDLhxweB~@U`QYiE zqn5HRxI~uOaqEb{8?mG+O9O5>;pUoUpOD~18TLOJ4%CU-C`-qR1nX6}KxlI&an2-y zhHNicxIDnzYYSFpB$F8jmf-T^oa2`tf;cGT`oG0VOc9pZh}F&-XvR+v#Z)CTm`!Fs zp#ddSN2C3u*G)Br%i@WBqbo}lI2w}^s*7M5*2eaUh3{DK9JM%i@?}8^x1}UMK5`>U z_;3%z92k`T8BCwv8)+`V^$Na)n zt{M7m_T$@f+}UcfQ5U;OhNwV@ogFr6hbW}Woe3BaQ+hmhX|#Pv^HPLMP+SoSuJ(^Ec<)5(1k9G=C2Qp zkF4s#pQ#5N$v^4aFH!Yqskx4}XDa!@-&~z1|1C}Br*X`AO`|@l#9Nr@+`guzq=(JCeePL)+05#xc)Xmj@9x zxe>0nyF9gQX85cRSf zNr)ke_cB~0k8s1Ye$;mC$&2CUFSBsTq{(d6HOytJ&aETaaaQ=Co>a488$Pf9t%1H^Sac~c&$1RISB0^V==YaU;h--gKlz$7rIQmjUwId={2s6W zvwjCaZ3Xm`yAeRk2!j`s1=EWWv9 zH}S%tHo6(Z9Z_o)q_Edg{k#LR&M%RqvdQJJVG)z%cstZjnb*d-6wF~Wt@~_7qfLwG z(z7a0IDx9ggZOQfuWQ6$vwM-mKtH{zsj*$twk#~Ia1oYC67|@Sfl4;wWcSw4q`&G- zNybxC;0dR)p+I>FWY<&QkIw&I)&^txsm9MsD?>q5n!F}Q&w$x5S?i^jW|!N1kFTYl z@|@Icl*jmWq>-62DjAYL&Pc}0GoS7{D#`6EwutS|^pW$uJ9j#ZGpz{LFj~>x2otW| zCQ_siAB{7cuBXg=9kU(Tdm~(uiH76doL%8oqR991u`(e?lD+F<%6{y-U9W~>>medd zEBz2SSM<0hUW*zWkmnQ9YLQwqi>woADre4zgcaNqE)XCHgy+8F3A-gBv*KQfqfrt+ XA)u^t{FU24GNo&^IE0C6|2_RbAJ5ff literal 0 HcmV?d00001 diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg.meta similarity index 70% rename from examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta rename to examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg.meta index 9f25815..b0258fa 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier03.jpg.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/javelin03.jpg.meta @@ -2,7 +2,7 @@ "ver": "1.0.21", "importer": "image", "imported": true, - "uuid": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88", + "uuid": "00463b4b-2098-43bf-ab0f-75d68a7b19aa", "files": [ ".jpg", ".json" @@ -11,7 +11,7 @@ "6c48a": { "ver": "1.0.21", "importer": "texture", - "uuid": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a", + "uuid": "00463b4b-2098-43bf-ab0f-75d68a7b19aa@6c48a", "imported": true, "files": [ ".json" @@ -26,16 +26,16 @@ "premultiplyAlpha": false, "anisotropy": 0, "isUuid": true, - "imageUuidOrDatabaseUri": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88" + "imageUuidOrDatabaseUri": "00463b4b-2098-43bf-ab0f-75d68a7b19aa" }, - "displayName": "soldier03", + "displayName": "javelin03", "id": "6c48a", "name": "texture" } }, "userData": { "type": "texture", - "redirect": "8b8d74a3-bdf7-4c4d-8334-2cb7e0f7bf88@6c48a", + "redirect": "00463b4b-2098-43bf-ab0f-75d68a7b19aa@6c48a", "hasAlpha": false } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl new file mode 100644 index 0000000..3473823 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.30360022187233, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "8b29322f-dd78-4a56-98d7-b3d60e2d8a84@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl.meta new file mode 100644 index 0000000..1a2c074 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/red.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "08f0736d-0b54-4a93-9991-17d426a9fb01", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl new file mode 100644 index 0000000..1ce8d24 --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl @@ -0,0 +1,48 @@ +{ + "__type__": "cc.Material", + "_name": "", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "1baf0fc9-befa-459c-8bdd-af1a450a0319", + "__expectedType__": "cc.EffectAsset" + }, + "_techIdx": 0, + "_defines": [ + { + "USE_INSTANCING": true, + "USE_ALBEDO_MAP": true + }, + {}, + {}, + {} + ], + "_states": [ + { + "rasterizerState": {}, + "depthStencilState": {}, + "blendState": { + "targets": [ + {} + ] + } + }, + {}, + {}, + {} + ], + "_props": [ + { + "alphaThreshold": 0, + "roughness": 0.30360022187233, + "metallic": 0.400000005960464, + "mainTexture": { + "__uuid__": "00463b4b-2098-43bf-ab0f-75d68a7b19aa@6c48a", + "__expectedType__": "cc.Texture2D" + } + }, + {}, + {}, + {} + ] +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl.meta new file mode 100644 index 0000000..7aef2eb --- /dev/null +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/javelin/yellow.mtl.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.9", + "importer": "material", + "imported": true, + "uuid": "40462a03-2591-4a93-8e5f-5815118c7fcb", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta index 5287e4e..932df2e 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.FBX.meta @@ -2,86 +2,85 @@ "ver": "2.1.4", "importer": "fbx", "imported": true, - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f", + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c", "files": [], "subMetas": { "f6845": { - "ver": "1.1.0", "importer": "gltf-mesh", - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@f6845", + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@f6845", + "displayName": "", + "id": "f6845", + "name": "newMap01.mesh", + "userData": { + "gltfIndex": 0 + }, + "ver": "1.1.0", "imported": true, "files": [ ".bin", ".json" ], - "subMetas": {}, + "subMetas": {} + }, + "1cdc4": { + "importer": "gltf-embeded-image", + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@1cdc4", + "displayName": "", + "id": "1cdc4", + "name": "贴图 #3.image", "userData": { "gltfIndex": 0 }, - "displayName": "", - "id": "f6845", - "name": "newMap01.mesh" - }, - "3500c": { "ver": "1.0.3", - "importer": "gltf-embeded-image", - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c", "imported": true, "files": [ ".jpg", ".json" ], - "subMetas": {}, - "userData": { - "gltfIndex": 0 - }, - "displayName": "", - "id": "3500c", - "name": "newMap01.jpg.image" + "subMetas": {} }, "bfae8": { - "ver": "1.0.21", "importer": "texture", - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@bfae8", - "imported": true, - "files": [ - ".json" - ], - "subMetas": {}, + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@bfae8", + "displayName": "", + "id": "bfae8", + "name": "贴图 #3.texture", "userData": { "wrapModeS": "repeat", "wrapModeT": "repeat", "minfilter": "linear", "magfilter": "linear", "mipfilter": "none", - "premultiplyAlpha": false, "anisotropy": 0, "isUuid": true, - "imageUuidOrDatabaseUri": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c" + "imageUuidOrDatabaseUri": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@1cdc4" }, - "displayName": "", - "id": "bfae8", - "name": "贴图 #3.texture" - }, - "7ff75": { - "ver": "1.0.14", - "importer": "gltf-material", - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@7ff75", + "ver": "1.0.21", "imported": true, "files": [ ".json" ], - "subMetas": {}, + "subMetas": {} + }, + "7ff75": { + "importer": "gltf-material", + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@7ff75", + "displayName": "", + "id": "7ff75", + "name": "Material #27.material", "userData": { "gltfIndex": 0 }, - "displayName": "", - "id": "7ff75", - "name": "Material #27.material" + "ver": "1.0.14", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} }, "fc11b": { "importer": "gltf-scene", - "uuid": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "uuid": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@fc11b", "displayName": "", "id": "fc11b", "name": "newMap01.prefab", @@ -99,26 +98,26 @@ "userData": { "imageMetas": [ { - "name": "newMap01.jpg", - "uri": "c26a63b9-5039-47ae-b027-ef2bce881f6f@3500c" + "name": "贴图 #3", + "uri": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@1cdc4" } ], - "redirect": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "legacyFbxImporter": false, + "redirect": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@fc11b", "assetFinder": { "meshes": [ - "c26a63b9-5039-47ae-b027-ef2bce881f6f@f6845" + "3777d1a7-cafe-44be-9efd-ae46b6457e2c@f6845" ], "skeletons": [], "textures": [ - "c26a63b9-5039-47ae-b027-ef2bce881f6f@bfae8" + "3777d1a7-cafe-44be-9efd-ae46b6457e2c@bfae8" ], "materials": [ - "c26a63b9-5039-47ae-b027-ef2bce881f6f@7ff75" + "3777d1a7-cafe-44be-9efd-ae46b6457e2c@7ff75" ], "scenes": [ - "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b" + "3777d1a7-cafe-44be-9efd-ae46b6457e2c@fc11b" ] - }, - "legacyFbxImporter": true + } } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta index 59e0cf5..22831f5 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.jpg.meta @@ -2,40 +2,39 @@ "ver": "1.0.21", "importer": "image", "imported": true, - "uuid": "27e1fcb7-5016-4252-8c43-ac9c1c97308e", + "uuid": "96c88bc3-119a-412a-ac6f-5936ba8b9dc7", "files": [ ".jpg", ".json" ], "subMetas": { "6c48a": { - "ver": "1.0.21", "importer": "texture", - "uuid": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a", - "imported": true, - "files": [ - ".json" - ], - "subMetas": {}, + "uuid": "96c88bc3-119a-412a-ac6f-5936ba8b9dc7@6c48a", + "displayName": "newMap01", + "id": "6c48a", + "name": "texture", "userData": { "wrapModeS": "repeat", "wrapModeT": "repeat", "minfilter": "linear", "magfilter": "linear", "mipfilter": "none", - "premultiplyAlpha": false, "anisotropy": 0, "isUuid": true, - "imageUuidOrDatabaseUri": "27e1fcb7-5016-4252-8c43-ac9c1c97308e" + "imageUuidOrDatabaseUri": "96c88bc3-119a-412a-ac6f-5936ba8b9dc7" }, - "displayName": "newMap01", - "id": "6c48a", - "name": "texture" + "ver": "1.0.21", + "imported": true, + "files": [ + ".json" + ], + "subMetas": {} } }, "userData": { + "hasAlpha": false, "type": "texture", - "redirect": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a", - "hasAlpha": false + "redirect": "96c88bc3-119a-412a-ac6f-5936ba8b9dc7@6c48a" } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl index f6505cb..ac6e670 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl @@ -27,7 +27,7 @@ "_props": [ { "mainTexture": { - "__uuid__": "27e1fcb7-5016-4252-8c43-ac9c1c97308e@6c48a", + "__uuid__": "96c88bc3-119a-412a-ac6f-5936ba8b9dc7@6c48a", "__expectedType__": "cc.Texture2D" } } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta index 36d1e1c..930fe11 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta +++ b/examples/cocos-creator-multiplayer/frontend/assets/3d/map/newMap01.mtl.meta @@ -2,7 +2,7 @@ "ver": "1.0.9", "importer": "material", "imported": true, - "uuid": "b7d6d595-6cd1-43c6-8bc7-3a92644870b9", + "uuid": "5ff93eca-e35a-43eb-b801-6e99d62ccac5", "files": [ ".json" ], diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.FBX deleted file mode 100644 index 3774d4483d8c4e255f71bd1ad1e9a81355dbac99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173376 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 z�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 a_&+}P)bEF$NsmsCzJ2r4%Y$Z=&hmfQLSWbc diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier01.jpg deleted file mode 100644 index 73a07f3f4559dd0a8a1a5c8fa9b2fb46dab3265b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7048 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 diff --git a/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg b/examples/cocos-creator-multiplayer/frontend/assets/3d/soldier/soldier02.jpg deleted file mode 100644 index 0ad1fdd878ab0e44e4eb706b49ddf064d8f92146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6145 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[] = []; private _targetPos = new Vec3; + start() { + this.ani.getState('win').speed = 4; + } + init(state: PlayerState, isSelf: boolean) { this.playerId = state.id; this.isSelf = isSelf; this.mesh.material!.setProperty('mainTexture', this.isSelf ? this.texSelf : this.texOther); } - // 把 GameSystem 空间映射到游戏空间 - updateSelf(state: PlayerState) { + updateState(state: PlayerState, now: number) { + this.state = state; + this.now = now; + + if (state.dizzyEndTime && state.dizzyEndTime >= now) { + this.setAni('win'); + } + else { + if (this._lastAni === 'win') { + this.setAni('idle') + } + } + + this.isSelf ? this._resetState(state, now) : this._tweenState(state, now); + } + + // 直接更新 + private _resetState(state: PlayerState, now: number) { // 更新位置 this._targetPos.set(state.pos.x, 0, -state.pos.y); if (!this.node.position.equals(this._targetPos)) { @@ -45,7 +67,9 @@ export class Player extends Component { this.setAni('idle'); } } - updateOther(state: PlayerState) { + + // 插值更新 + private _tweenState(state: PlayerState, now: number) { // 更新位置 let newPos = new Vec3(state.pos.x, 0, -state.pos.y); if (!this._targetPos.equals(newPos)) { @@ -73,10 +97,16 @@ export class Player extends Component { } } + private _lastAni?: string; setAni(ani: string) { - if (this.ani.getState(ani)?.isPlaying) { + if (this.state.dizzyEndTime && this.state.dizzyEndTime >= this.now) { + ani = 'win'; + } + + if (this._lastAni === ani) { return; } + this._lastAni = ani; this.ani.crossFade(ani, 0.1); } diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene index ffa8349..bb6b39e 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.scene @@ -20,24 +20,24 @@ { "__id__": 6 }, - { - "__id__": 9 - }, { "__id__": 5 }, { - "__id__": 19 + "__id__": 16 + }, + { + "__id__": 25 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 43 + "__id__": 57 }, "autoReleaseAssets": false, "_globals": { - "__id__": 46 + "__id__": 60 }, "_id": "0d3889f6-dc9c-424e-b8cd-6fa78d63af15" }, @@ -185,18 +185,148 @@ }, { "__type__": "cc.Node", - "_name": "Plane", "_objFlags": 0, "_parent": { "__id__": 1 }, - "_children": [], - "_active": false, - "_components": [ + "_prefab": { + "__id__": 7 + } + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 6 + }, + "asset": { + "__uuid__": "3777d1a7-cafe-44be-9efd-ae46b6457e2c@fc11b", + "__expectedType__": "cc.Prefab" + }, + "fileId": "2cyg9D4KRTnaWvFuyUcwrn", + "instance": { + "__id__": 8 + } + }, + { + "__type__": "cc.PrefabInstance", + "fileId": "0aP//OBbtBM7WKwKJf+Wup", + "mountedChildren": [], + "mountedComponents": [], + "propertyOverrides": [ { - "__id__": 7 + "__id__": 9 + }, + { + "__id__": 11 + }, + { + "__id__": 12 + }, + { + "__id__": 13 + }, + { + "__id__": 14 } ], + "removedComponents": [] + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 10 + }, + "propertyPath": [ + "_name" + ], + "value": "newMap01" + }, + { + "__type__": "cc.TargetInfo", + "localID": [ + "2cyg9D4KRTnaWvFuyUcwrn" + ] + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 10 + }, + "propertyPath": [ + "_lpos" + ], + "value": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 10 + }, + "propertyPath": [ + "_lrot" + ], + "value": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + } + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 10 + }, + "propertyPath": [ + "_euler" + ], + "value": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 15 + }, + "propertyPath": [ + "_materials", + "0" + ], + "value": { + "__uuid__": "5ff93eca-e35a-43eb-b801-6e99d62ccac5", + "__expectedType__": "cc.Material" + } + }, + { + "__type__": "cc.TargetInfo", + "localID": [ + "70i4FgkglSS44fGyMM5mGT" + ] + }, + { + "__type__": "cc.Node", + "_name": "arrows", + "_objFlags": 0, + "_parent": { + "__id__": 1 + }, + "_children": [ + { + "__id__": 17 + } + ], + "_active": true, + "_components": [], "_prefab": null, "_lpos": { "__type__": "cc.Vec3", @@ -213,9 +343,9 @@ }, "_lscale": { "__type__": "cc.Vec3", - "x": 100, - "y": 100, - "z": 100 + "x": 1, + "y": 1, + "z": 1 }, "_layer": 1073741824, "_euler": { @@ -224,97 +354,49 @@ "y": 0, "z": 0 }, - "_id": "1erbampNxCKK1cr4qjZjeX" - }, - { - "__type__": "cc.MeshRenderer", - "_name": "Plane", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 6 - }, - "_enabled": true, - "__prefab": null, - "_materials": [ - { - "__uuid__": "00f711c1-6f4c-4de3-bc9b-52888e03f3ac", - "__expectedType__": "cc.Material" - } - ], - "_visFlags": 0, - "lightmapSettings": { - "__id__": 8 - }, - "_mesh": { - "__uuid__": "1263d74c-8167-4928-91a6-4e2672411f47@2e76e", - "__expectedType__": "cc.Mesh" - }, - "_shadowCastingMode": 0, - "_shadowReceivingMode": 1, - "_enableMorph": true, - "_id": "82T+4KKehOcqLqvINaID/a" - }, - { - "__type__": "cc.ModelLightmapSettings", - "texture": null, - "uvParam": { - "__type__": "cc.Vec4", - "x": 0, - "y": 0, - "z": 0, - "w": 0 - }, - "_bakeable": false, - "_castShadow": false, - "_receiveShadow": false, - "_recieveShadow": false, - "_lightmapSize": 64 + "_id": "46+eJFPoNAd75C26ynMBuo" }, { "__type__": "cc.Node", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 16 }, "_prefab": { - "__id__": 10 + "__id__": 18 } }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 9 + "__id__": 17 }, "asset": { - "__uuid__": "c26a63b9-5039-47ae-b027-ef2bce881f6f@fc11b", + "__uuid__": "6eda806d-83a6-474f-a7b7-b75c57ba73b3", "__expectedType__": "cc.Prefab" }, - "fileId": "2cyg9D4KRTnaWvFuyUcwrn", + "fileId": "ad10ECDidH979xbvqlbbgn", "instance": { - "__id__": 11 + "__id__": 19 } }, { "__type__": "cc.PrefabInstance", - "fileId": "e7wpFdRzxFupYfDrzr/lg7", + "fileId": "f7+AxAbd1K15HySl2cJ7yx", "mountedChildren": [], "mountedComponents": [], "propertyOverrides": [ { - "__id__": 12 + "__id__": 20 }, { - "__id__": 14 + "__id__": 22 }, { - "__id__": 15 + "__id__": 23 }, { - "__id__": 16 - }, - { - "__id__": 17 + "__id__": 24 } ], "removedComponents": [] @@ -322,23 +404,23 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 13 + "__id__": 21 }, "propertyPath": [ "_name" ], - "value": "newMap01" + "value": "Arrow" }, { "__type__": "cc.TargetInfo", "localID": [ - "2cyg9D4KRTnaWvFuyUcwrn" + "ad10ECDidH979xbvqlbbgn" ] }, { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 13 + "__id__": 21 }, "propertyPath": [ "_lpos" @@ -346,14 +428,14 @@ "value": { "__type__": "cc.Vec3", "x": 0, - "y": 0, + "y": 1.248, "z": 0 } }, { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 13 + "__id__": 21 }, "propertyPath": [ "_lrot" @@ -369,7 +451,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 13 + "__id__": 21 }, "propertyPath": [ "_euler" @@ -381,26 +463,6 @@ "z": 0 } }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 18 - }, - "propertyPath": [ - "_materials", - "0" - ], - "value": { - "__uuid__": "b7d6d595-6cd1-43c6-8bc7-3a92644870b9", - "__expectedType__": "cc.Material" - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "7cPmRsw4Ne67cKUY0ub3s2" - ] - }, { "__type__": "cc.Node", "_name": "Canvas", @@ -410,25 +472,28 @@ }, "_children": [ { - "__id__": 20 + "__id__": 26 }, { - "__id__": 22 + "__id__": 28 + }, + { + "__id__": 45 } ], "_active": true, "_components": [ { - "__id__": 39 + "__id__": 53 }, { - "__id__": 40 + "__id__": 54 }, { - "__id__": 41 + "__id__": 55 }, { - "__id__": 42 + "__id__": 56 } ], "_prefab": null, @@ -465,13 +530,13 @@ "_name": "Camera", "_objFlags": 0, "_parent": { - "__id__": 19 + "__id__": 25 }, "_children": [], "_active": true, "_components": [ { - "__id__": 21 + "__id__": 27 } ], "_prefab": null, @@ -508,7 +573,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 26 }, "_enabled": true, "__prefab": null, @@ -548,16 +613,16 @@ "__type__": "cc.Node", "_objFlags": 0, "_parent": { - "__id__": 19 + "__id__": 25 }, "_prefab": { - "__id__": 23 + "__id__": 29 } }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 22 + "__id__": 28 }, "asset": { "__uuid__": "0363f7f8-204e-410e-ade0-03adca6ea835", @@ -565,7 +630,7 @@ }, "fileId": "25fHuwytBN2qk6dH5oVJvO", "instance": { - "__id__": 24 + "__id__": 30 } }, { @@ -575,31 +640,31 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 25 - }, - { - "__id__": 27 - }, - { - "__id__": 28 - }, - { - "__id__": 29 - }, - { - "__id__": 30 - }, - { - "__id__": 32 + "__id__": 31 }, { "__id__": 33 }, + { + "__id__": 34 + }, { "__id__": 35 }, { - "__id__": 37 + "__id__": 36 + }, + { + "__id__": 38 + }, + { + "__id__": 39 + }, + { + "__id__": 41 + }, + { + "__id__": 43 } ], "removedComponents": [] @@ -607,7 +672,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 26 + "__id__": 32 }, "propertyPath": [ "_name" @@ -623,7 +688,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 26 + "__id__": 32 }, "propertyPath": [ "_lpos" @@ -638,7 +703,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 26 + "__id__": 32 }, "propertyPath": [ "_lrot" @@ -654,7 +719,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 26 + "__id__": 32 }, "propertyPath": [ "_euler" @@ -669,7 +734,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 31 + "__id__": 37 }, "propertyPath": [ "_contentSize" @@ -689,7 +754,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 26 + "__id__": 32 }, "propertyPath": [ "_layer" @@ -699,7 +764,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 34 + "__id__": 40 }, "propertyPath": [ "_layer" @@ -715,7 +780,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 36 + "__id__": 42 }, "propertyPath": [ "_layer" @@ -731,7 +796,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 38 + "__id__": 44 }, "propertyPath": [ "_layer" @@ -744,12 +809,307 @@ "ceQ/tc9/lBPIsW1Hwyb91a" ] }, + { + "__type__": "cc.Node", + "_name": "Button", + "_objFlags": 0, + "_parent": { + "__id__": 25 + }, + "_children": [ + { + "__id__": 46 + } + ], + "_active": true, + "_components": [ + { + "__id__": 49 + }, + { + "__id__": 50 + }, + { + "__id__": 51 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 264.283, + "y": -478.226, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "44lzj+VZRCMLuziTcP1V6q" + }, + { + "__type__": "cc.Node", + "_name": "Label", + "_objFlags": 512, + "_parent": { + "__id__": 45 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 47 + }, + { + "__id__": 48 + } + ], + "_prefab": null, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_layer": 33554432, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "afHTkFAaBL6qlFBW/06nBo" + }, { "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, "node": { - "__id__": 19 + "__id__": 46 + }, + "_enabled": true, + "__prefab": null, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 40 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "d0+XZjhtFN4o0VtZ3cP1zP" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 46 + }, + "_enabled": true, + "__prefab": null, + "_visFlags": 0, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_string": "射", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 40, + "_fontSize": 40, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 1, + "_enableWrapText": false, + "_font": null, + "_isSystemFontUsed": true, + "_isItalic": false, + "_isBold": false, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_id": "c1kmr4puZOWoZlBemNQ7cf" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 45 + }, + "_enabled": true, + "__prefab": null, + "_contentSize": { + "__type__": "cc.Size", + "width": 100, + "height": 100 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "d93lLsU2NL9oCpzxLfa4KT" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 45 + }, + "_enabled": true, + "__prefab": null, + "_visFlags": 0, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 1, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "4cPoFJnW5GHrHtY9gw0VbP" + }, + { + "__type__": "cc.Button", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 45 + }, + "_enabled": true, + "__prefab": null, + "clickEvents": [ + { + "__id__": 52 + } + ], + "_interactable": true, + "_transition": 3, + "_normalColor": { + "__type__": "cc.Color", + "r": 214, + "g": 214, + "b": 214, + "a": 255 + }, + "_hoverColor": { + "__type__": "cc.Color", + "r": 211, + "g": 211, + "b": 211, + "a": 255 + }, + "_pressedColor": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_disabledColor": { + "__type__": "cc.Color", + "r": 124, + "g": 124, + "b": 124, + "a": 255 + }, + "_normalSprite": { + "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_hoverSprite": { + "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_pressedSprite": { + "__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_disabledSprite": { + "__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941", + "__expectedType__": "cc.SpriteFrame" + }, + "_duration": 0.1, + "_zoomScale": 1.2, + "_target": { + "__id__": 45 + }, + "_id": "96d2z2/TpJ558pTlUMNNUO" + }, + { + "__type__": "cc.ClickEvent", + "target": { + "__id__": 25 + }, + "component": "", + "_componentId": "d4728cOzxlKHLMu5Xg48U8U", + "handler": "onBtnAttack", + "customEventData": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 25 }, "_enabled": true, "__prefab": null, @@ -770,12 +1130,12 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 19 + "__id__": 25 }, "_enabled": true, "__prefab": null, "_cameraComponent": { - "__id__": 21 + "__id__": 27 }, "_alignCanvasWithScreen": true, "_id": "ebX9QTnS1AlKH1eI+/bdJk" @@ -785,7 +1145,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 19 + "__id__": 25 }, "_enabled": true, "__prefab": null, @@ -814,7 +1174,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 19 + "__id__": 25 }, "_enabled": true, "__prefab": null, @@ -823,9 +1183,16 @@ "__uuid__": "809957ef-4f3f-4527-87cc-cb3223f7500a", "__expectedType__": "cc.Prefab" }, + "prefabArrow": { + "__uuid__": "6eda806d-83a6-474f-a7b7-b75c57ba73b3", + "__expectedType__": "cc.Prefab" + }, "players": { "__id__": 5 }, + "arrows": { + "__id__": 16 + }, "camera": { "__id__": 4 }, @@ -836,24 +1203,24 @@ "fileId": "", "targetOverrides": [ { - "__id__": 44 + "__id__": 58 } ] }, { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 42 + "__id__": 56 }, "sourceInfo": null, "propertyPath": [ "joyStick" ], "target": { - "__id__": 22 + "__id__": 28 }, "targetInfo": { - "__id__": 45 + "__id__": 59 } }, { @@ -865,16 +1232,16 @@ { "__type__": "cc.SceneGlobals", "ambient": { - "__id__": 47 + "__id__": 61 }, "shadows": { - "__id__": 48 + "__id__": 62 }, "_skybox": { - "__id__": 49 + "__id__": 63 }, "fog": { - "__id__": 50 + "__id__": 64 } }, { diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.ts b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.ts index 560c105..c089af8 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.ts +++ b/examples/cocos-creator-multiplayer/frontend/assets/scenes/GameScene/GameScene.ts @@ -1,5 +1,6 @@ import { Component, instantiate, Node, Prefab, Vec2, _decorator } from 'cc'; +import { Arrow } from '../../prefabs/Arrow/Arrow'; import { Joystick } from '../../prefabs/Joystick/Joystick'; import { Player } from '../../prefabs/Player/Player'; import { FollowCamera } from '../../scripts/components/FollowCamera'; @@ -27,9 +28,13 @@ export class GameScene extends Component { @property(Prefab) prefabPlayer!: Prefab; + @property(Prefab) + prefabArrow!: Prefab; @property(Node) players!: Node; + @property(Node) + arrows!: Node; @property(FollowCamera) camera: FollowCamera = null as any; @@ -37,6 +42,7 @@ export class GameScene extends Component { gameManager = new GameManager(); private _playerInstances: { [playerId: number]: Player } = {}; + private _arrowInstances: { [arrowId: number]: Arrow } = {}; private _selfSpeed?: Vec2 = new Vec2(0, 0); onLoad() { @@ -63,7 +69,6 @@ export class GameScene extends Component { } update(dt: number) { - // Send Inputs if (this._selfSpeed && this._selfSpeed.lengthSqr()) { this._selfSpeed.normalize().multiplyScalar(gameConfig.moveSpeed); @@ -77,6 +82,11 @@ export class GameScene extends Component { }) } + this._updatePlayers(); + this._updateArrows(); + } + + private _updatePlayers() { // Update pos let playerStates = this.gameManager.state.players; for (let playerState of playerStates) { @@ -94,7 +104,7 @@ export class GameScene extends Component { } // 自己不插值(本地预测),插值其它人 - player.isSelf ? player.updateSelf(playerState) : player.updateOther(playerState); + player.updateState(playerState, this.gameManager.state.now); } // Clear left players @@ -107,4 +117,36 @@ export class GameScene extends Component { } } + private _updateArrows() { + // Update pos + let arrowStates = this.gameManager.state.arrows; + for (let arrowState of arrowStates) { + let arrow: Arrow = this._arrowInstances[arrowState.id]; + if (!arrow) { + let node = instantiate(this.prefabArrow); + this.arrows.addChild(node); + arrow = this._arrowInstances[arrowState.id] = node.getComponent(Arrow)!; + arrow.init(arrowState) + } + + arrow.updateState(arrowState, this.gameManager.state.now); + } + + // Clear left players + for (let i = this.arrows.children.length - 1; i > -1; --i) { + let arrow = this.arrows.children[i].getComponent(Arrow)!; + if (!this.gameManager.state.arrows.find(v => v.id === arrow.id)) { + arrow.node.removeFromParent(); + delete this._arrowInstances[arrow.id]; + } + } + } + + onBtnAttack() { + this.gameManager.sendClientInput({ + type: 'PlayerAttack', + direction: this._playerInstances[this.gameManager.selfPlayerId].node.forward + }) + } + } \ No newline at end of file diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/components/FollowCamera.ts b/examples/cocos-creator-multiplayer/frontend/assets/scripts/components/FollowCamera.ts index 3a0450c..eb40da3 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/scripts/components/FollowCamera.ts +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/components/FollowCamera.ts @@ -1,4 +1,4 @@ -import { _decorator, Component, Node, Vec3, Quat, Tween, tween } from "cc"; +import { Component, Node, Tween, Vec3, _decorator } from "cc"; import { MathUtil } from '../models/MathUtil'; const { ccclass, property } = _decorator; @@ -34,7 +34,7 @@ export class FollowCamera extends Component { minZ = -Infinity; maxZ = Infinity; - protected _tweenFollow?: Tween; + protected _tweenFollow?: Tween; protected _targetWorldPos = new Vec3; protected _lastTargetPos = new Vec3; diff --git a/examples/cocos-creator-multiplayer/frontend/assets/scripts/models/GameManager.ts b/examples/cocos-creator-multiplayer/frontend/assets/scripts/models/GameManager.ts index 57a390f..6ec3182 100644 --- a/examples/cocos-creator-multiplayer/frontend/assets/scripts/models/GameManager.ts +++ b/examples/cocos-creator-multiplayer/frontend/assets/scripts/models/GameManager.ts @@ -38,7 +38,6 @@ export class GameManager { }); } - (window as any).gm = this; }