From df792f0560a37eea8cd0f1923f7dfe8b6fdb2055 Mon Sep 17 00:00:00 2001 From: Tungdv Date: Tue, 16 Dec 2025 17:32:16 +0700 Subject: [PATCH 1/5] Fix: update check brush. --- Assets/PerfectWorld/Scripts/Move/EC_CDR.cs | 159 ++++++++------------- 1 file changed, 63 insertions(+), 96 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs index c32d5ba7c1..e0d7b0c6ba 100644 --- a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs +++ b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs @@ -101,34 +101,44 @@ namespace BrewMonster pEnvTrc.fFraction = 100.0f; pEnvTrc.bStartSolid = false; pEnvTrc.dwClsFlag = 0; + Vector3 vStart = EC_Utility.ToVector3(pEnvTrc.vStart); + Vector3 vExt = EC_Utility.ToVector3(pEnvTrc.vExt); + Vector3 vDelta = EC_Utility.ToVector3(pEnvTrc.vDelta); + Vector3 vTerStart = EC_Utility.ToVector3(pEnvTrc.vTerStart); + Vector3 dir = Vector3.zero; + if ((pEnvTrc.dwCheckFlag & CDR_EVN.CDR_BRUSH) == CDR_EVN.CDR_BRUSH) { - BrushTraceInfo bruInfo = new BrushTraceInfo(); - bruInfo.Init(pEnvTrc.vStart, pEnvTrc.vDelta, pEnvTrc.vExt); - if (AABBCollideWithBrush(ref bruInfo)) + dir = vStart + vDelta; + if (Physics.BoxCast(vStart, vExt, dir, out RaycastHit hit, Quaternion.identity, vDelta.magnitude, 1 << 7)) { - pEnvTrc.fFraction = bruInfo.fFraction; - pEnvTrc.vHitNormal = bruInfo.ClipPlane.GetNormal(); - pEnvTrc.bStartSolid = bruInfo.bStartSolid; + pEnvTrc.fFraction = (hit.distance - vExt.x) / vDelta.magnitude; + pEnvTrc.vHitNormal = EC_Utility.ToA3DVECTOR3(hit.normal); pEnvTrc.dwClsFlag = CDR_EVN.CDR_BRUSH; } + else + { + pEnvTrc.fFraction = 1f; + } } if ((pEnvTrc.dwCheckFlag & CDR_EVN.CDR_TERRAIN) == CDR_EVN.CDR_TERRAIN) { - float fFraction = 0f; - A3DVECTOR3 vTerNormal = new A3DVECTOR3(); - bool bStart = false; - if (CollideWithTerrain(pEnvTrc.vTerStart, pEnvTrc.vDelta, ref fFraction, ref vTerNormal, ref bStart) - && (fFraction < pEnvTrc.fFraction)) + float fFractionTerrain = 0f; + dir = vDelta; + if (Physics.Raycast(vTerStart, dir.normalized, out RaycastHit hit, vDelta.magnitude, 1<<6)) { - //assert(fFraction >= 0.0f); - //pEnvTrc.fFraction = a_Max(0.0f, fFraction - 1E-4f); - pEnvTrc.fFraction = fFraction; - pEnvTrc.vHitNormal = vTerNormal; - pEnvTrc.bStartSolid = bStart; + fFractionTerrain = (hit.distance) / vDelta.magnitude; + pEnvTrc.vHitNormal = EC_Utility.ToA3DVECTOR3(hit.normal); pEnvTrc.dwClsFlag = CDR_EVN.CDR_TERRAIN; } - + else + { + fFractionTerrain = 1f; + } + if(fFractionTerrain < pEnvTrc.fFraction) + { + pEnvTrc.fFraction = fFractionTerrain; + } } if ((pEnvTrc.dwCheckFlag & CDR_EVN.CDR_WATER) == CDR_EVN.CDR_WATER) @@ -156,46 +166,6 @@ namespace BrewMonster return (pEnvTrc.fFraction < 1.0f + 1E-4f); } - // == Thay CollideWithEnv (C++) bằng BoxCast == - //static bool CollideWithEnv_BoxCast(Vector3 vStart, Vector3 vDelta, Vector3 vExt, - // LayerMask mask, - // out RaycastHit hit, out float fFraction, out Vector3 vHitNormal, out bool bStartSolid, - // float skin = 0.01f) - //{ - // hit = default; - // vHitNormal = Vector3.up; - // bStartSolid = false; - // fFraction = 0.0f; - - // float dist = vDelta.magnitude; - // if (dist <= 1e-6f) return false; - - // var hasHit = Physics.Raycast(vStart, vDelta,out hit, dist, mask); - // if (hasHit) - // { - // bStartSolid = true; - // fFraction = (t - 5E-4f) / vDelta.Normalize(); - // return true; - // } - // // start-in-solid - // var overlapped = Physics.OverlapBox(vStart, vExt - Vector3.one * skin, Quaternion.identity, mask, QueryTriggerInteraction.Ignore); - // if (overlapped != null && overlapped.Length > 0) - // { - // bStartSolid = true; - // return true; - // } - - // // sweep AABB - // Vector3 dir = vDelta / Mathf.Max(dist, 1e-6f); - // if (Physics.BoxCast(vStart, vExt - Vector3.one * skin, dir, out hit, Quaternion.identity, dist, mask, QueryTriggerInteraction.Ignore)) - // { - // fFraction = Mathf.Clamp01(hit.distance / Mathf.Max(dist, 1e-6f)); - // vHitNormal = hit.normal; - // return true; - // } - // return false; - //} - // == Thay RetrieveSupportPlane (C++) bằng Raycast xuống == static bool DoGroundProbe(Vector3 vStart, Vector3 vExt, float fDeltaY, LayerMask mask, out Vector3 vEnd, out Vector3 vHitNormal, out bool bSupport, @@ -280,6 +250,10 @@ namespace BrewMonster int nTry = 0; LayerMask mask = UsedMask_Ground(); + env_trace_t trcInfo = new env_trace_t(); + trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH; + trcInfo.vExt = CDRInfo.vExtent; + while (nTry < 1) { vDelta = vVelocity * fTime; @@ -290,22 +264,20 @@ namespace BrewMonster //bool hasHit = CollideWithEnv_BoxCast(vStart, vDelta, vExt, mask, // out RaycastHit hit, out float fFraction, out Vector3 hitNormal, out bool bStartSolid); Vector3 posFoot = vStart - Vector3.up * vExt.y; - //if (Physics.BoxCast(vStart, vExt, (vStart + Vector3.down).normalized, out RaycastHit hit1, Quaternion.identity, vExt.y, mask)) - //{ - // if (hit1.point.y > posFoot.y) - // { - // Debug.LogError("hit.point.y > posFoot.y"); - // posFoot.y = hit1.point.y; - // } - //} - if (Physics.Raycast(vStart, (vStart + Vector3.down).normalized, out RaycastHit hit1, vExt.y, mask)) + + if (Physics.Raycast(vStart, (vStart + Vector3.down).normalized, out RaycastHit hit, vExt.y, mask)) { - if (hit1.point.y > posFoot.y) + if (hit.point.y > posFoot.y) { - posFoot.y = hit1.point.y; + posFoot.y = hit.point.y; } } - bool bClear = !Physics.Raycast(posFoot, (posFoot + vDelta).normalized, out RaycastHit hit, fDeltaDist, mask); + //bool bClear = !Physics.Raycast(posFoot, (posFoot + vDelta).normalized, out hit, fDeltaDist, mask); + trcInfo.vStart = CDRInfo.vCenter; + trcInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); + trcInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + //trcInfo.vTerStart.y -= vExt.y; //foot + bool bClear = !CollideWithEnv(ref trcInfo); nTry++; if (bClear) { @@ -314,17 +286,10 @@ namespace BrewMonster CDRInfo.fMoveDist += fDeltaDist; break; } - //if (trcInfo.bStartSolid) - //{ - // CDRInfo.fMoveDist = 0f; - // if (CDRInfo.vTPNormal.y < CDRInfo.fSlopeThresh) CDRInfo.vTPNormal = Vector3.up; - // return; - //} - vStart = hit.point + Vector3.up * vExt.y; + //vStart = hit.point + Vector3.up * vExt.y; + vStart = vDelta * trcInfo.fFraction + Vector3.up * vExt.y; + vFinalPos = vStart; - //CDRInfo.fMoveDist += (fDeltaDist * fFraction); - //fTime -= fTime * fFraction; - //vNormal = hitNormal; // Step-up (giữ tinh thần bản gốc) if (!bFreeFall && !bTryPull && !bJump) @@ -332,36 +297,38 @@ namespace BrewMonster //float skin = 0.01f; posFoot = vStart - Vector3.up * vExt.y + Vector3.up * CDRInfo.fStepHeight; Vector3 vStartUp = new Vector3(0f, CDRInfo.fStepHeight, 0f); - //if (Physics.Raycast(vStart, (vStart + Vector3.down).normalized, out hit1, vExt.y, mask)) - //{ - // if (hit1.point.y > posFoot.y) - // { - // Debug.LogError("hit.point.y > posFoot.y"); - // posFoot.y = hit1.point.y + CDRInfo.fStepHeight; - // } - //} - bPull = !Physics.Raycast(posFoot, (Vector3.up).normalized, out hit, CDRInfo.fStepHeight, mask); + //bPull = !Physics.Raycast(posFoot, (Vector3.up).normalized, out hit, CDRInfo.fStepHeight, mask); + + env_trace_t tmpInfo = new env_trace_t(); + tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); + tmpInfo.vDelta = new A3DVECTOR3(0.0f, CDRInfo.fStepHeight, 0.0f); + tmpInfo.vExt = CDRInfo.vExtent; + //@note : need check terrain?? By Kuiwu[8/10/2005] + tmpInfo.dwCheckFlag = CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_TERRAIN; + tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + + bPull = !CollideWithEnv(ref tmpInfo); if (bPull) { vStart += Vector3.up * CDRInfo.fStepHeight; posFoot = vStart - Vector3.up * vExt.y; - //Vector3 vDelta2 = vVelocity; - bool bMove = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out hit, fDeltaDist, mask); + //bool bMove = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out hit, fDeltaDist, mask); + + tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); + tmpInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); + tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + bool bMove = !CollideWithEnv(ref tmpInfo); + if (!bMove) { //vDelta2 *= frac2; - vFinalPos = hit.point + Vector3.up * vExt.y; + vFinalPos = vDelta * tmpInfo.fFraction + Vector3.up * vExt.y; } else { Debug.DrawLine(vFinalPos, vFinalPos + vDelta, Color.red, 10f); vFinalPos += vDelta; } - //if (vDelta2.sqrMagnitude < (vExt.x * vExt.x * 4f)) - //{ - // vStart -= Vector3.up * CDRInfo.fStepHeight; - // bPull = false; - //} } bTryPull = true; } From 84e32e56b308408b8a7a84e831973d89bd25540e Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Tue, 16 Dec 2025 19:35:42 +0700 Subject: [PATCH 2/5] add protocol --- .../Network/CSNetwork/Protocols/Protocol.cs | 14 ++++- .../CSNetwork/Protocols/getcustomdata_re.cs | 56 +++++++++++++++++++ .../Protocols/getcustomdata_re.cs.meta | 2 + 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs create mode 100644 Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs.meta diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/Protocol.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/Protocol.cs index 78495654c6..81aa57a54a 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/Protocol.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/Protocol.cs @@ -166,7 +166,19 @@ namespace CSNetwork.Protocols private static bool ValidateProtocol(uint type, uint size) { var stub = _protocolMap.GetValueOrDefault(type); - return stub != null && size <= MaxProtocolSize; + if (stub == null) + { + _logger.Warning($"ValidateProtocol: Protocol type {type} not found. Returning false."); + return false; + } + + if (size > MaxProtocolSize) + { + _logger.Warning($"ValidateProtocol: Protocol type {type} size {size} is greater than MaxProtocolSize {MaxProtocolSize}. Returning false."); + return false; + } + + return true; } private const int MaxProtocolSize = 16 * 1024 * 1024; // 16MB max size diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs new file mode 100644 index 0000000000..6e8e9e76be --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; + +namespace CSNetwork.Protocols +{ + public class getcustomdata_re : Protocol + { + public int Result { get; set; } + public int Roleid { get; set; } + public int Localsid { get; set; } + public Octets UiConfig { get; set; } + + public int retcode { get; set; } + public int roleid { get; set; } + public uint localsid { get; set; } + public uint cus_roleid { get; set; } + public Octets customdata {get; set;} + + public getcustomdata_re() : base(ProtocolType.PROTOCOL_GETCUSTOMDATA_RE) + { + customdata = new Octets(); + } + + public override Protocol Clone() => new getcustomdata_re + { + retcode = retcode, + roleid = roleid, + localsid = localsid, + cus_roleid = cus_roleid, + customdata = customdata + }; + + public override void Marshal(OctetsStream os) + { + os.Write(retcode); + os.Write(roleid); + os.Write(localsid); + os.Write(cus_roleid); + os.Write(customdata); + } + + public override void Unmarshal(OctetsStream os) + { + retcode = os.ReadInt32(); + roleid = os.ReadInt32(); + localsid = os.ReadUInt32(); + cus_roleid = os.ReadUInt32(); + customdata = os.ReadOctets(); + } + + public override int PriorPolicy() => 1; + + public override bool SizePolicy(int size) => size <= 4096; + } +} + diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs.meta b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs.meta new file mode 100644 index 0000000000..8e5fadc8d8 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/Protocols/getcustomdata_re.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6fa7e46f896407f499da351c8772b6d2 \ No newline at end of file From 7edb881cb3a2307a3f7438e9c938b7327cd2e075 Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Tue, 16 Dec 2025 20:13:56 +0700 Subject: [PATCH 3/5] add matte morel --- .../AddressableAssetSettings.asset | 2 +- .../AssetGroups/models.asset | 6 + .../Art/Models/models/npcs/怪物/32物品妖.meta | 8 + .../npcs/怪物/32物品妖/魔法封印的宝箱.meta | 8 + .../32物品妖/魔法封印的宝箱/魔法封印的宝箱.meta | 8 + .../魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat | 137 +++++++ .../魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat.meta | 8 + .../魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh | 203 ++++++++++ .../魔法封印的宝箱/Box01_0.mesh.meta | 8 + .../魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab | 119 ++++++ .../魔法封印的宝箱/Box01_0.prefab.meta | 7 + .../魔法封印的宝箱/魔法封印的宝箱小.prefab | 380 ++++++++++++++++++ .../魔法封印的宝箱/魔法封印的宝箱小.prefab.meta | 7 + .../Textures/models/npcs/怪物/32物品妖.meta | 8 + .../npcs/怪物/32物品妖/魔法封印的宝箱.meta | 8 + .../32物品妖/魔法封印的宝箱/textures.meta | 8 + .../魔法封印的宝箱/textures/魔法封印的宝箱.png | Bin 0 -> 63683 bytes .../textures/魔法封印的宝箱.png.meta | 143 +++++++ .../PerfectWorld/Scripts/Objet/CECMatter.cs | 6 +- 19 files changed, 1072 insertions(+), 2 deletions(-) create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab.meta create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab create mode 100644 Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab.meta create mode 100644 Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖.meta create mode 100644 Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta create mode 100644 Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures.meta create mode 100644 Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures/魔法封印的宝箱.png create mode 100644 Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures/魔法封印的宝箱.png.meta diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset index 29730a3d19..e2f0b0d762 100644 --- a/Assets/AddressableAssetsData/AddressableAssetSettings.asset +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -15,7 +15,7 @@ MonoBehaviour: m_DefaultGroup: 712e3991f28e549e7a56ee582a977810 m_currentHash: serializedVersion: 2 - Hash: d7ea27f22d507888a9e5476f10563211 + Hash: 00000000000000000000000000000000 m_OptimizeCatalogSize: 0 m_BuildRemoteCatalog: 0 m_CatalogRequestsTimeout: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset b/Assets/AddressableAssetsData/AssetGroups/models.asset index 90cb01caf4..0916183d61 100644 --- a/Assets/AddressableAssetsData/AssetGroups/models.asset +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset @@ -1699,6 +1699,12 @@ MonoBehaviour: - equipment - models FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 1442e7dcfba1366488f9abeab708864a + m_Address: "models/npcs/\u602A\u7269/32\u7269\u54C1\u5996/\u9B54\u6CD5\u5C01\u5370\u7684\u5B9D\u7BB1/\u9B54\u6CD5\u5C01\u5370\u7684\u5B9D\u7BB1\u5C0F.ecm" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 14581b8af110f2547a48143cb80e5798 m_Address: "models/players/\u88C5\u5907/\u5973/13b\u6B66\u4FA0\u804C\u4E1A\u88C5\u4E0A\u8863/\u5973\u901A\u752813b\u6B66\u4FA0\u804C\u4E1A\u88C5\u4E0A\u8863.ecm" m_ReadOnly: 0 diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖.meta new file mode 100644 index 0000000000..b5298be289 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e91d249ceb608ee4bb7b880be5e7a448 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta new file mode 100644 index 0000000000..1ead6ef743 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4bd1ac89ebb2164ab48076ee3cbb56b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱.meta new file mode 100644 index 0000000000..c9f6be6fbe --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 390d29f03a8935448bef8884b836b7d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat new file mode 100644 index 0000000000..d0e4cb77fa --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat @@ -0,0 +1,137 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-3115309107172234749 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Box01_0 + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _ALPHATEST_ON + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2450 + stringTagMap: + RenderType: TransparentCutout + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 914f1d1ec5673224388f8ae4eb93958a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 914f1d1ec5673224388f8ae4eb93958a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 1 + - _AlphaToMask: 1 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.001 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat.meta new file mode 100644 index 0000000000..275d336650 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5722cad6c9220a248b32d02be1e7015f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh new file mode 100644 index 0000000000..b9b34d3e52 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh @@ -0,0 +1,203 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!43 &4300000 +Mesh: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Box01_0 + serializedVersion: 11 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 66 + topology: 0 + baseVertex: 0 + firstVertex: 0 + vertexCount: 32 + localAABB: + m_Center: {x: 0.004867792, y: 0.29433393, z: 0.000000014901161} + m_Extent: {x: 0.4090197, y: 0.2940315, z: 0.27242136} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: + - e00: -0.016946318 + e01: 0.9998566 + e02: 0.000000029802326 + e03: -0.039453417 + e10: -0.00000008940697 + e11: -0.00000011920929 + e12: 1 + e13: 0.000000006428704 + e20: 0.9998565 + e21: 0.016946256 + e22: 0 + e23: -0.0006686648 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + - e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_BonesAABB: + - m_Min: {x: -0.046164893, y: -0.27242136, z: -0.40475747} + m_Max: {x: 0.55567646, y: 0.27242136, z: 0.42313} + - m_Min: {x: Infinity, y: Infinity, z: Infinity} + m_Max: {x: -Infinity, y: -Infinity, z: -Infinity} + m_VariableBoneCountWeights: + m_Data: + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexFormat: 0 + m_IndexBuffer: 0200010000000000030002000600050004000400070006000a00090008000c000b000a000d000c000a000d000a0008000e000d000800110010000f000f00120011001500140013001700160015001800170015001800150013001900180013001c001b001a001a001d001c0002001f001e001e00010002001f001c001d001d001e001f00 + m_VertexData: + serializedVersion: 3 + m_VertexCount: 32 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 12 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 1 + offset: 0 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 2 + offset: 0 + format: 0 + dimension: 4 + - stream: 2 + offset: 16 + format: 10 + dimension: 4 + m_DataSize: 2048 + _typelessdata: 00edcebe4ecbb83ecb7a8b3e22830bb47a3b0b3f8cd3563fffeccebea1b7093fe477213e02bde6b3d783443f0f11243f0ee9d33ea1b7093fed77213e3dfbdcb3d783443f0f11243f0de9d33e4ecbb83ecf7a8b3e3e4e03b4793b0b3f8cd3563f0de9d33e73949e39d17a8b3ef29643b46878b1330000803f00edcebe73949e39cb7a8b3e22b56ab4000000000000803f00edcebe4ecbb83ecb7a8b3ef29643b46878b1330000803f0de9d33e4ecbb83ecf7a8b3ec2781cb4687831340000803f00edcebe73949e39cb7a8b3e000080bff5e251329c3230b4fdeccebea1919e39cf7a8bbe000080bfb94b74a89c3230b4fdeccebe4ecbb83ed07a8bbe000080bf99531bb2aeb51db4feeccebea1b7093fed7721be000080bfed6278b3441637b4ffeccebe1e9f163f6db8a3b3000080bf5ddb1fb403f0cab3ffeccebea1b7093fe477213e000080bfc8802bb2ac1a20b400edcebe4ecbb83ecb7a8b3e000080bf00000000f0728bb4fdeccebea1919e39cf7a8bbec1781c346778b1b3000080bf10e9d33ea1919e39cb7a8bbec1781c346778b1b3000080bf10e9d33e4ecbb83ecc7a8bbec1781c346778b1b3000080bffdeccebe4ecbb83ed07a8bbec1781c346778b1b3000080bf10e9d33ea1919e39cb7a8bbe0000803f0de351329d3230340de9d33e73949e39d17a8b3e0000803fba4bf4289c3230340de9d33e4ecbb83ecf7a8b3e0000803f89531bb2b1b51d340ee9d33ea1b7093fed77213e0000803ff66278b3421637340fe9d33e1e9f163f589d82330000803f5edb1fb403f0ca330fe9d33ea1b7093fe57721be0000803fc1802bb2ad1a203410e9d33e4ecbb83ecc7a8bbe0000803f1b58c128ef728b34fdeccebe4ecbb83ed07a8bbe0ff6fe337c3b0b3f8cd356bf10e9d33e4ecbb83ecc7a8bbe0ff6fe337c3b0b3f8cd356bf0fe9d33ea1b7093fe57721be80b2de33a404313f19ef38bffeeccebea1b7093fed7721bedfe3ab33b908573f4be90abfffeccebe1e9f163f6db8a3b3d802b9b2128f7e3f5300d93d0fe9d33e1e9f163f589d823375ae7632128f7e3f5300d9bd0000013f000000000000013f0000d03d00007f3f0000d03d00007f3f000000000000fe3e00007f3f0000803b00007f3f0000803b0000433f0000fe3e0000433f0000013f0000803f00007f3f0000803f00007f3f0000463f0000633f00002a3f00003f3f0000233f00001a3f00002a3f0000013f0000463f0000013f0000203f00007f3f0000203f00007f3f0000c43e0000013f0000c43e0000013f0000803f00007f3f0000803f00007f3f0000463f0000633f00002a3f00003f3f0000233f00001a3f00002a3f0000013f0000463f0000013f0000c43e00007f3f0000c43e00007f3f0000923e0000013f0000923e0000013f0000443e00007f3f0000443e0000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f000000000000000000000000000000000000000000000000000000000000803f00000000000000000000000000000000000000000000000000000000 + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0.004867792, y: 0.29433393, z: 0.000000014901161} + m_Extent: {x: 0.4090197, y: 0.2940315, z: 0.27242136} + m_MeshUsageFlags: 0 + m_CookingOptions: 30 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + 'm_MeshMetrics[0]': 1 + 'm_MeshMetrics[1]': 1 + m_MeshOptimizationFlags: 1 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh.meta new file mode 100644 index 0000000000..2644c989c9 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.mesh.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58c1a2d10ae2b914a88a2281bb5bf96a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4300000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab new file mode 100644 index 0000000000..6f15d27837 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab @@ -0,0 +1,119 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6140007671914382511 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8903825486503764437} + - component: {fileID: 8750203408594128925} + - component: {fileID: 5166826509143948991} + - component: {fileID: 5459939725609795997} + m_Layer: 0 + m_Name: Box01_0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8903825486503764437 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6140007671914382511} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8750203408594128925 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6140007671914382511} + m_Mesh: {fileID: 4300000, guid: 58c1a2d10ae2b914a88a2281bb5bf96a, type: 2} +--- !u!137 &5166826509143948991 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6140007671914382511} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5722cad6c9220a248b32d02be1e7015f, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 4300000, guid: 58c1a2d10ae2b914a88a2281bb5bf96a, type: 2} + m_Bones: + - {fileID: 0} + - {fileID: 0} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 0} + m_AABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_DirtyAABB: 0 +--- !u!114 &5459939725609795997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6140007671914382511} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2189a384460241f89635c90802d6c270, type: 3} + m_Name: + m_EditorClassIdentifier: + _skeletonBuilder: {fileID: 0} + _meshFilter: {fileID: 8750203408594128925} + _skinnedMeshRenderer: {fileID: 5166826509143948991} + BoneNames: + - Bone02 diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab.meta new file mode 100644 index 0000000000..1cf58a4f14 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱/Box01_0.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3ea4854beb922e24fb53875ae9bb6740 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab new file mode 100644 index 0000000000..f609e73e24 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab @@ -0,0 +1,380 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2142465482498032316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9116329449756975279} + - component: {fileID: 5602719492404425111} + m_Layer: 0 + m_Name: "\u9B54\u6CD5\u5C01\u5370\u7684\u5B9D\u7BB1" + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9116329449756975279 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2142465482498032316} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1682221397893027975} + - {fileID: 2287142222681038928} + - {fileID: 6560746386147567036} + m_Father: {fileID: 2504815096422338851} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} +--- !u!95 &5602719492404425111 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2142465482498032316} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &2342673677820808233 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5751786341065879054} + m_Layer: 0 + m_Name: HH_fx01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5751786341065879054 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2342673677820808233} + serializedVersion: 2 + m_LocalRotation: {x: -0.0000000305647, y: 0.70108974, z: 0.00000003005105, w: 0.7130731} + m_LocalPosition: {x: 0.27565014, y: 8.647188e-11, z: 0.003151229} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4632241631221141121} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4838574376121939473 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1682221397893027975} + - component: {fileID: 2675749075624738704} + - component: {fileID: 6676038990753274020} + m_Layer: 0 + m_Name: CustomMeshRender + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1682221397893027975 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838574376121939473} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9116329449756975279} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2675749075624738704 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838574376121939473} + m_Mesh: {fileID: 0} +--- !u!137 &6676038990753274020 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838574376121939473} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 0} + m_Bones: [] + m_BlendShapeWeights: [] + m_RootBone: {fileID: 0} + m_AABB: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_DirtyAABB: 0 +--- !u!1 &5034815621241663843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2504815096422338851} + - component: {fileID: 2886303939034520672} + m_Layer: 0 + m_Name: "\u9B54\u6CD5\u5C01\u5370\u7684\u5B9D\u7BB1\u5C0F" + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2504815096422338851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5034815621241663843} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9116329449756975279} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &2886303939034520672 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5034815621241663843} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 0.58143216, z: 0.54702204} + m_Center: {x: 0, y: 0.2912911, z: -0.0027312338} +--- !u!1 &8235708353750757754 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2287142222681038928} + m_Layer: 0 + m_Name: 000 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2287142222681038928 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8235708353750757754} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -1, z: -0, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4632241631221141121} + m_Father: {fileID: 9116329449756975279} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9203708403987941035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4632241631221141121} + m_Layer: 0 + m_Name: Bone02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4632241631221141121 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9203708403987941035} + serializedVersion: 2 + m_LocalRotation: {x: 0.49574533, y: 0.50421876, z: 0.5042188, w: 0.49574536} + m_LocalPosition: {x: -0.000000018803775, y: 0.039459076, z: -0.0000000017248172} + m_LocalScale: {x: 0.99999994, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5751786341065879054} + m_Father: {fileID: 2287142222681038928} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2349975245296796777 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 9116329449756975279} + m_Modifications: + - target: {fileID: 5166826509143948991, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_RootBone + value: + objectReference: {fileID: 2287142222681038928} + - target: {fileID: 5166826509143948991, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: 'm_Bones.Array.data[0]' + value: + objectReference: {fileID: 4632241631221141121} + - target: {fileID: 5166826509143948991, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: 'm_Bones.Array.data[1]' + value: + objectReference: {fileID: 2287142222681038928} + - target: {fileID: 6140007671914382511, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_Name + value: Box01_0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 5459939725609795997, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} +--- !u!4 &6560746386147567036 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8903825486503764437, guid: 3ea4854beb922e24fb53875ae9bb6740, type: 3} + m_PrefabInstance: {fileID: 2349975245296796777} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab.meta b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab.meta new file mode 100644 index 0000000000..931a318554 --- /dev/null +++ b/Assets/ModelRenderer/Art/Models/models/npcs/怪物/32物品妖/魔法封印的宝箱/魔法封印的宝箱小.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1442e7dcfba1366488f9abeab708864a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖.meta b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖.meta new file mode 100644 index 0000000000..7e84fb5860 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87f438b49a50c704f89eb173bedc5588 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta new file mode 100644 index 0000000000..90ebd3a166 --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56f4c39291f183847bd5aaaf3fb10d28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures.meta b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures.meta new file mode 100644 index 0000000000..c47657312e --- /dev/null +++ b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 26996bc8b154b9a4db3ac53deae61246 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures/魔法封印的宝箱.png b/Assets/ModelRenderer/Art/Textures/models/npcs/怪物/32物品妖/魔法封印的宝箱/textures/魔法封印的宝箱.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbc9e2c35db64cd8d1b6e2e2e108aad5f888bb0 GIT binary patch literal 63683 zcmV)7K*zs{P)Ob>G>TFTUa9jAl6C5aWRc92o=*2o^<{3@upn+Hh=1bQs%Gyq1%ScdL|5Mb56b zYPV{uvTklihZG@FqH^Vi#H$$t}YoPb>kNebW=6Ag}$8PUqxG8=k zJiJNzX7ro$YkY4rL1>idP2Shct&#es+;8?+ue?^f8(~=W)gJB-?c4jJ+gaTR8*7`P zf2c3?4fY4Ve|>#DY;0_Vp~1n>cSGsr9R_vLymfXt-~KS%>I$J|)P|uksAFRIY*k zu-;t{{mu5@p?udVXog(B{fgf|&=&@G^oOCg;&k*1KCM;99a0=Wt>tv>VSURgb(Zo| z)x>wMzM7sls}#!bx}Lxm%1cB+SNRMo-yyvl*to8`jTogUdRbR>rD_gCsyAGoQ#|6P zI6Mz39O&2g;UDky?fpvAQkbeF0`CK81M0J-XYyQL4q?}>5XSFlg{76c5xZ)HA>}iu z3peOmQe2l~0L1UUz7a1nZqsrC2mpkj2`zQ5v58!oMqpPJIiwFT#0KZ30xB73D=CGK z_s!m)yi*6uA4p|Vak;+Lf!4#I8g;#!$~iVrm!+#t*}6Svk{uA@ji7A&7%x|_)2tTH z!<2WR8&+3^6vL@2m7ma&KMe+~s{AoN_xkqX+`*azXjN_1eJz!nIHUvk7J$YtVKbM9 zx}_f1BIc$Tt5@8;(=*6#fCvC|VgTgd5CZm5KSaw>ht+}Bgm@d*>$Jo-v{fFrAAUxD z-}h%+2Km?Zs!iIj*#;T;BM}fW*rXf<5r~ME%jx&x4uWKvp!5&{g;8Dz0LTyYtDF#k zj=rTW>;d@!5Z%a+TlFi28Tr>#uMi%twd*Mz#Hgwh%HL80kf5k12*H~COrJpJvhQ;L zMle)_ujev2zFr@Jykog@KQJN_81L^$@%$TcFh9iplG9Oqpl|ur)YH1k8A4#hHz6R> z=CH|;%WlOZ}3aYjzU;R9UZ^z!kr%1aY{em8~OcQBFnlyhpP!jEc`)8U#9%c z_}e{${M$i06NP4Yh5R{yI`D-TM5~PB?`h`qR-Zxq$OVX40~>1Fc!>xw^7m(Ci1}LKSB7y95isKOOcj`z+Qr`hQZwQMaBaZ4-eGVW;+X*S&}N9h zS{^CdIRiTCrG@pI*nfxs+yGD_zhCx72uz-Uk$|{d_D`Yd*A&#$v-}`p7+G-3(Xz9W z(sxx4{#blKe4s?QGCOS*@eOWb+0=3P4!*~E_?e_l z;s#s(X3#H0F%f_TWR&VxC+4b$E9Fvrn_24Z@{XK<%GlpuzaL_76U(j)+-4wM`?exS zH7aP$lw{BiEEbw~4`zgigImi8xGt{1_ieF~5P;6B8$F26sJ}tEREJ#auh;J*?M5Ea zYhT`SeUEFdDSG+`BAN-ny7FCCISifx@JyAKh)5KfBssVAzCSp*=hX9ngK)fA~JTP_x%4OhoO&>NyNd+r;F0|B1A4r4j zDyIONbM=72OK2iMIT91^%~*6gY!4I^E&4aZdm`WbaPyqLH_p7~MArCJQtGhNQ)$FncqwxT3ZH#k^waepzkdK;!?s$o-$N^ z4Fa*S-1~xS1*c1z!93r0`t=)i`SGJ(OXw5?3IF-Ujj(gPjY!(&_% zfw9rlFnF2>Ox-;c=3nZqn4P03T{}+~E?iv;dv*?mg*?S@0lrz>L$j&nPt9f0nhSR5 z-Mt9E*l6%(`5)NZ+k+qgPoMA2lQgq;r+h8ox%g674c3an)iO`Guo9NC;C1TG)Ub13 zPxU@^XR7bT<(dGL=@8s9bwil74nfz5wU*g$rU1>zRe^vGUwe|48z3KVmq!;4A9>JCGj) zpOCw#SGhJua}mZead7yO;_MOOG|Wu2!{aCF{?^LENE3j4@0pHK&pm%Rx*qGzIS;^A z0pJ6i97pWis;sB;}%`a-slLx?w@%}I&V$r0q`=(oA|2?UK&%Ur4itOTh zLxX~L@)RTmidwy^x58I4Cqnpvy~E-Bh293X5Q^}_2ZsZ!VhP7{WgYsqRKsKNvISU( zXRnn`UD^1VzQ6BaN`LL;UJhWa!2yik-kZNigqi77CyN?krY1yC7ZYN48zaPQfrazm zSPzHy4~1QK_Ju1ir;@aX>&}`ufK+nJZ9MYh3n4Iz9_Rn^tLEnUepT6e^e4?*g?28+ zy5u}>1wj5c0+4?zFyc4EAOgUchPVp(n~~ne^J7mWq-u*mg7_tzc_BR?xTm*oJ$ZIr zc$APEA^>bPt(_9lGZ85BeWQDb0|4^RsO~Pll=4r$^)DRIvawv=kN&xbV&G%H_GB;- zSkk9?S{XS2Vlet!U}E-vJ&qEoA(mI%^<#eV2O7RKa`NJ~Z|DNQ> zJIBZBd!A?Rt`Uak**uzk@X&bp@~Ne;vecXZfxW#L-5aU_Bag)71(*PsGkD?;dQ*5+ z!5jdKE+9Wd0AMK(FoJXM(I0m;3tUVDW+r>Thxl>X_B9c2aR6=2txF<6xMctk0ki(m zUz|XcJ%|>S@)W{KIP*gN)LXmq&r^yzMu|N2{gXGZH`YmtyH6MQ+zx9Mri5PdpF(~% zESFJw?z`7}!&3Qs{dy9-$wPBWcJuf5X3!d_>%bvbYbL{9+qzxJNJPr(@axwi>u-;) z@YpcinC{pg`r!86arDqw&lo)aYFC1Tg!BjknG#qJ0GAK`OCK4Fc`@&pY>co*0KaT% zte52)Yb;ZYH=Y~#S1qMEKjye4?8+?ClV=je-oL9CA!Zva{gS?~2L^icYc^<;fHceB zEm%DAEe7oPnlC(YrRQ~Hk|~^ezGm6_ne-LVluc|-Z zkpaXhKw}QNyiEHJ3h^@sQLK~i-aRGmuP>aNyIhrMHp@U(B=o&3jt_b|S9}t4{*vpe znb?%Y#%A3iqffz5#dKLlL0F#zik<ZyM;^AP3tfs{-CEeKWjDm~Y;0d7J6CuJM~<)gBE5ZkCVoJl3dVv;TD_^&QJq zhNQewBg8}BeZLUA6(0L_v5N%}aQv-Yri>*Rk?hxe4w(RKg&do4DKTYeLcpBsraW@y z5h+XL2jR#cK?aE5Kz@=LQMor#bMNxlZNAg#98MZTkCb1pF7tI9T&Hd3UB)5I>3OH` zOV=v^Wjf!t^6H(RFI@otmPG_49M%j5h*dXSC?v}E`;%~u_;W8@lEi-_BK}s$|K#tT472ynyzN&Sfy#s+9wWMu ztO_fTE&2&zN+cy1?Lk9dW_ckZ&Ag)OfH{yVjXYSI&dbw@t8i|~b$N}5elBBe=hrMp z8PEASpXRgU;u7X($G87h&t({b+a?iknr_wufD?e#@4rneO=A7IAO=?JCO+WhesU4 z^sdd)+l}-k<5Iji_G`bXwrz)TseOmr2h|BIa9j)Ym+>sexpa9Ube6QPCSa~Vtckca z%Q`F%2(}v8dO9=xAtPV<*4`RLx8CuitLPPc%7CiL$}AAVU&PymVqO*tC=6z+x^ z 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⩔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%0Dbzh-l() == null) { var collider = matterObject.AddComponent(); - collider.size = matterObject.GetComponentInChildren().bounds.size; + collider.size = matterObject.GetComponentInChildren().bounds.size; } // Create text object to display item name above the cube From 97bf43338105ee94534769962b47ead3f5a8a206 Mon Sep 17 00:00:00 2001 From: Tungdv Date: Wed, 17 Dec 2025 10:40:29 +0700 Subject: [PATCH 4/5] fix: update logic move on ground. feat: add btn jump. --- Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab | 272 ++++++++++++++++++ .../Prefab/UI/JumpBtn.prefab.meta | 7 + .../Scripts/Managers/EC_HostInputFilter.cs | 46 +-- Assets/PerfectWorld/Scripts/Move/EC_CDR.cs | 57 ++-- Assets/PerfectWorld/Scripts/UI/JumpBtn.cs | 29 ++ .../PerfectWorld/Scripts/UI/JumpBtn.cs.meta | 2 + Assets/Scenes/a61.unity | 4 +- 7 files changed, 366 insertions(+), 51 deletions(-) create mode 100644 Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab create mode 100644 Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab.meta create mode 100644 Assets/PerfectWorld/Scripts/UI/JumpBtn.cs create mode 100644 Assets/PerfectWorld/Scripts/UI/JumpBtn.cs.meta diff --git a/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab b/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab new file mode 100644 index 0000000000..1db10eff5a --- /dev/null +++ b/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab @@ -0,0 +1,272 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6426564401230013186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3325367652782365102} + - component: {fileID: 6868997766477093256} + - component: {fileID: 2867419621240194058} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3325367652782365102 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426564401230013186} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 266017875005995358} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.9228058, y: 0.69200134} + m_SizeDelta: {x: -78.8826, y: -78.8826} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6868997766477093256 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426564401230013186} + m_CullTransparentMesh: 1 +--- !u!114 &2867419621240194058 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6426564401230013186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: JUMP + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 44.7 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6792439420010771896 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 266017875005995358} + - component: {fileID: 5557092053757495849} + - component: {fileID: 3695308113943472152} + - component: {fileID: 1194531703109065144} + - component: {fileID: 4432331937269434665} + m_Layer: 5 + m_Name: JumpBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &266017875005995358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6792439420010771896} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3325367652782365102} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -61, y: 46} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 1, y: 0} +--- !u!222 &5557092053757495849 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6792439420010771896} + m_CullTransparentMesh: 1 +--- !u!114 &3695308113943472152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6792439420010771896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1194531703109065144 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6792439420010771896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3695308113943472152} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &4432331937269434665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6792439420010771896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a6149141837cadc4baae427c4864833e, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab.meta b/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab.meta new file mode 100644 index 0000000000..6f0963e6b7 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/UI/JumpBtn.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0104938c092195b40ab7f3b6e5bf342e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs index 7ebe15b0b9..2ce3d28d84 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HostInputFilter.cs @@ -19,27 +19,7 @@ namespace BrewMonster } if (Input.GetKeyDown(KeyCode.Space)) { - //if (bInAutoMode) return; - if (IsJumpInWater() || IsFlying()) - return; - - if (IsUnderWater()) - { - if (!CanTakeOffWater()) - return; - else if (_JumpTime <= 0) - { - _JumpTime = Time.realtimeSinceStartup; - return; - } - else if ((Time.realtimeSinceStartup - _JumpTime) < 1f) // logic in c++, _JumpTime is milisecond - return; - else - _JumpTime = -1f; - } - - m_GndInfo.bOnGround = GroundCheck(out lastGroundHit); - OnMsgHstJump(); + OnClickBtnJump(); } } @@ -208,5 +188,29 @@ namespace BrewMonster PlayAction((int)PLAYER_ACTION_TYPE.ACT_JUMP_LOOP, false, 0, true); } + public void OnClickBtnJump() + { + //if (bInAutoMode) return; + if (IsJumpInWater() || IsFlying()) + return; + + if (IsUnderWater()) + { + if (!CanTakeOffWater()) + return; + else if (_JumpTime <= 0) + { + _JumpTime = Time.realtimeSinceStartup; + return; + } + else if ((Time.realtimeSinceStartup - _JumpTime) < 1f) // logic in c++, _JumpTime is milisecond + return; + else + _JumpTime = -1f; + } + + m_GndInfo.bOnGround = GroundCheck(out lastGroundHit); + OnMsgHstJump(); + } } } diff --git a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs index e0d7b0c6ba..a6a60bede3 100644 --- a/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs +++ b/Assets/PerfectWorld/Scripts/Move/EC_CDR.cs @@ -124,7 +124,7 @@ namespace BrewMonster if ((pEnvTrc.dwCheckFlag & CDR_EVN.CDR_TERRAIN) == CDR_EVN.CDR_TERRAIN) { float fFractionTerrain = 0f; - dir = vDelta; + dir = vDelta; if (Physics.Raycast(vTerStart, dir.normalized, out RaycastHit hit, vDelta.magnitude, 1<<6)) { fFractionTerrain = (hit.distance) / vDelta.magnitude; @@ -264,7 +264,6 @@ namespace BrewMonster //bool hasHit = CollideWithEnv_BoxCast(vStart, vDelta, vExt, mask, // out RaycastHit hit, out float fFraction, out Vector3 hitNormal, out bool bStartSolid); Vector3 posFoot = vStart - Vector3.up * vExt.y; - if (Physics.Raycast(vStart, (vStart + Vector3.down).normalized, out RaycastHit hit, vExt.y, mask)) { if (hit.point.y > posFoot.y) @@ -272,22 +271,24 @@ namespace BrewMonster posFoot.y = hit.point.y; } } - //bool bClear = !Physics.Raycast(posFoot, (posFoot + vDelta).normalized, out hit, fDeltaDist, mask); - trcInfo.vStart = CDRInfo.vCenter; - trcInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); - trcInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); - //trcInfo.vTerStart.y -= vExt.y; //foot - bool bClear = !CollideWithEnv(ref trcInfo); + + bool bClear = !Physics.Raycast(posFoot, (posFoot + vDelta).normalized, out hit, fDeltaDist, mask); + + //trcInfo.vStart = CDRInfo.vCenter; + //trcInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); + //trcInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + ////trcInfo.vTerStart.y -= vExt.y; //foot + //bool bClear = !CollideWithEnv(ref trcInfo); nTry++; if (bClear) { - Debug.DrawLine(posFoot, posFoot + vDelta, Color.yellow, 10f); + //Debug.DrawLine(posFoot, posFoot + vDelta, Color.yellow, 10f); vFinalPos = vStart + vDelta; CDRInfo.fMoveDist += fDeltaDist; break; } - //vStart = hit.point + Vector3.up * vExt.y; - vStart = vDelta * trcInfo.fFraction + Vector3.up * vExt.y; + vStart = hit.point + Vector3.up * vExt.y; + //vStart += vDelta * trcInfo.fFraction + Vector3.up * vExt.y; vFinalPos = vStart; @@ -297,32 +298,32 @@ namespace BrewMonster //float skin = 0.01f; posFoot = vStart - Vector3.up * vExt.y + Vector3.up * CDRInfo.fStepHeight; Vector3 vStartUp = new Vector3(0f, CDRInfo.fStepHeight, 0f); - //bPull = !Physics.Raycast(posFoot, (Vector3.up).normalized, out hit, CDRInfo.fStepHeight, mask); + bPull = !Physics.Raycast(posFoot, (Vector3.up).normalized, out hit, CDRInfo.fStepHeight, mask); - env_trace_t tmpInfo = new env_trace_t(); - tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); - tmpInfo.vDelta = new A3DVECTOR3(0.0f, CDRInfo.fStepHeight, 0.0f); - tmpInfo.vExt = CDRInfo.vExtent; - //@note : need check terrain?? By Kuiwu[8/10/2005] - tmpInfo.dwCheckFlag = CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_TERRAIN; - tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + //env_trace_t tmpInfo = new env_trace_t(); + //tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); + //tmpInfo.vDelta = new A3DVECTOR3(0.0f, CDRInfo.fStepHeight, 0.0f); + //tmpInfo.vExt = CDRInfo.vExtent; + ////@note : need check terrain?? By Kuiwu[8/10/2005] + //tmpInfo.dwCheckFlag = CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_TERRAIN; + //tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + //bPull = !CollideWithEnv(ref tmpInfo); - bPull = !CollideWithEnv(ref tmpInfo); if (bPull) { vStart += Vector3.up * CDRInfo.fStepHeight; posFoot = vStart - Vector3.up * vExt.y; - //bool bMove = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out hit, fDeltaDist, mask); + bool bMove = !Physics.Raycast(posFoot, (posFoot + vVelocity).normalized, out hit, fDeltaDist, mask); - tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); - tmpInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); - tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); - bool bMove = !CollideWithEnv(ref tmpInfo); + //tmpInfo.vStart = EC_Utility.ToA3DVECTOR3(vStart); + //tmpInfo.vDelta = EC_Utility.ToA3DVECTOR3(vDelta); + //tmpInfo.vTerStart = EC_Utility.ToA3DVECTOR3(posFoot); + //bool bMove = !CollideWithEnv(ref tmpInfo); if (!bMove) { - //vDelta2 *= frac2; - vFinalPos = vDelta * tmpInfo.fFraction + Vector3.up * vExt.y; + vFinalPos = hit.point + Vector3.up * vExt.y; + //vFinalPos = vStart + vDelta * tmpInfo.fFraction + Vector3.up * vExt.y; } else { @@ -647,7 +648,7 @@ namespace BrewMonster vFinalPos = new A3DVECTOR3(vStart); int nTry = 0; bool bClear = true; - env_trace_t trcInfo; + env_trace_t trcInfo = new env_trace_t(); trcInfo.bWaterSolid = true; trcInfo.dwCheckFlag = CDR_EVN.CDR_TERRAIN | CDR_EVN.CDR_BRUSH | CDR_EVN.CDR_WATER; trcInfo.vExt = vExt; diff --git a/Assets/PerfectWorld/Scripts/UI/JumpBtn.cs b/Assets/PerfectWorld/Scripts/UI/JumpBtn.cs new file mode 100644 index 0000000000..e8ecd1d768 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/UI/JumpBtn.cs @@ -0,0 +1,29 @@ +using BrewMonster.Network; +using UnityEngine; +using UnityEngine.UI; + +namespace BrewMonster.UI +{ + public class JumpBtn : MonoBehaviour + { + Button jumpBtn; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void Start() + { + if(jumpBtn == null) + { + jumpBtn = GetComponent