feat(Emit): 为发射器添加缩放配置

This commit is contained in:
2025-10-27 22:31:48 +08:00
parent 5e30e6412a
commit 0dd2e3d9d9
2 changed files with 132 additions and 0 deletions

View File

@@ -820,6 +820,74 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3} m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3}
--- !u!1001 &606358046
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalPosition.x
value: 20
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalPosition.y
value: 0.8
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalPosition.z
value: -5
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2356242250385391551, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6227019518059310355, guid: be07db3098b709a40a6965f50f8c9640,
type: 3}
propertyPath: m_Name
value: Lever (9)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: be07db3098b709a40a6965f50f8c9640, type: 3}
--- !u!1001 &627238400 --- !u!1001 &627238400
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -2666,6 +2734,26 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7351527485767933101, guid: dbf59764203ca4645a295e650a306b7b,
type: 3}
propertyPath: fixedScale.x
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7351527485767933101, guid: dbf59764203ca4645a295e650a306b7b,
type: 3}
propertyPath: fixedScale.y
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7351527485767933101, guid: dbf59764203ca4645a295e650a306b7b,
type: 3}
propertyPath: fixedScale.z
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7351527485767933101, guid: dbf59764203ca4645a295e650a306b7b,
type: 3}
propertyPath: overridePrefabScale
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@@ -3357,6 +3445,7 @@ SceneRoots:
- {fileID: 473911345} - {fileID: 473911345}
- {fileID: 865274353} - {fileID: 865274353}
- {fileID: 6350903300567888677} - {fileID: 6350903300567888677}
- {fileID: 606358046}
- {fileID: 346781470} - {fileID: 346781470}
- {fileID: 817379214} - {fileID: 817379214}
- {fileID: 439165101} - {fileID: 439165101}

View File

@@ -19,6 +19,14 @@ namespace Script.Gameplay.Facility
[Header("生成对象销毁时间")] [Header("生成对象销毁时间")]
[SerializeField] private float destroyDelay = 5f; // 生成对象多少秒后销毁 [SerializeField] private float destroyDelay = 5f; // 生成对象多少秒后销毁
// 新增:发射物缩放设置
[Header("发射物缩放")]
[SerializeField] private bool overridePrefabScale = false; // 是否覆盖预制体原始缩放
[SerializeField] private Vector3 fixedScale = Vector3.one; // 固定缩放
[SerializeField] private bool randomizeScale = false; // 是否随机缩放
[SerializeField] private Vector3 minScale = Vector3.one; // 随机最小值(每轴)
[SerializeField] private Vector3 maxScale = Vector3.one; // 随机最大值(每轴)
private Coroutine emitCoroutine; private Coroutine emitCoroutine;
private void Start() private void Start()
@@ -62,6 +70,13 @@ namespace Script.Gameplay.Facility
{ {
if (prefabToEmit == null || emitPoint == null) return; if (prefabToEmit == null || emitPoint == null) return;
var obj = Instantiate(prefabToEmit, emitPoint.position, emitPoint.rotation); var obj = Instantiate(prefabToEmit, emitPoint.position, emitPoint.rotation);
// 应用缩放设置
if (overridePrefabScale)
{
obj.transform.localScale = ComputeEmitScale(obj.transform.localScale);
}
var rb = obj.GetComponent<Rigidbody>(); var rb = obj.GetComponent<Rigidbody>();
if (rb != null) if (rb != null)
{ {
@@ -70,5 +85,33 @@ namespace Script.Gameplay.Facility
// 添加销毁逻辑 // 添加销毁逻辑
Destroy(obj, destroyDelay); Destroy(obj, destroyDelay);
} }
// 计算要应用的缩放(考虑固定/随机,并保证 min<=max
private Vector3 ComputeEmitScale(Vector3 prefabScale)
{
if (!overridePrefabScale)
return prefabScale;
if (!randomizeScale)
return fixedScale;
// 确保 min <= max 各轴
Vector3 minV = new Vector3(
Mathf.Min(minScale.x, maxScale.x),
Mathf.Min(minScale.y, maxScale.y),
Mathf.Min(minScale.z, maxScale.z)
);
Vector3 maxV = new Vector3(
Mathf.Max(minScale.x, maxScale.x),
Mathf.Max(minScale.y, maxScale.y),
Mathf.Max(minScale.z, maxScale.z)
);
return new Vector3(
UnityEngine.Random.Range(minV.x, maxV.x),
UnityEngine.Random.Range(minV.y, maxV.y),
UnityEngine.Random.Range(minV.z, maxV.z)
);
}
} }
} }