adjustments on visual levels

This commit is contained in:
Nilton Constantino 2026-06-18 11:53:00 +01:00
parent 575cef61a9
commit 3c44aaf2bd
No known key found for this signature in database
27 changed files with 38561 additions and 17053 deletions

View File

@ -0,0 +1,14 @@
using Intrepid.Utilities;
using Sirenix.OdinInspector;
using UnityEngine;
namespace __Prototype.Scripts
{
public class FloorDetection : MonoBehaviour
{
[GroupConfigurations, SerializeField] private float offset;
[GroupInjections, SerializeField] private Transform heightReference;
[GroupDebug, ShowInInspector, ReadOnly] public float CurrentFloorHeight => heightReference.position.y - offset;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d62db5ebb0c7495085bd37c9484370f4
timeCreated: 1781757919

View File

@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using Intrepid.Utilities;
using Sirenix.OdinInspector;
using UnityEngine;
namespace __Prototype.Scripts
{
public class FloorManager : SingletonMonoBehaviour<FloorManager>
{
private const float DisabledUpperThreshold = 1_000_000f;
private const float DisabledUpperMax = 1_000_001f;
private const float DisabledLowerThreshold = -1_000_000f;
private const float DisabledLowerMin = -1_000_001f;
[GroupInjections, SerializeField] private FloorDetection floorDetection;
[GroupConfigurations("Upper Fade"), SerializeField] private float upperMax = 5.75f;
[GroupConfigurations("Upper Fade"), SerializeField] private float upperThreshold = 3f;
[GroupConfigurations("Lower Tint"), SerializeField] private float lowerThreshold = -3f;
[GroupConfigurations("Lower Tint"), SerializeField] private float lowerMin = -6f;
[GroupConfigurations("Lower Tint"), SerializeField] private Color lowerTintColor = new(0.35f, 0.35f, 0.35f, 1f);
private List<FloorVisualGroup> FloorVisualGroups { get; } = new();
private void Awake()
{
SingletonInstantiation(false, manager =>
{
manager.DetectFloorVisualGroups();
});
}
private void Start()
{
ApplyVisibility();
}
private void Update()
{
ApplyVisibility();
}
private void ApplyVisibility()
{
var request = CreateVisibilityRequest();
foreach (var floorVisualGroup in FloorVisualGroups)
{
if (floorVisualGroup.IsNull()) continue;
floorVisualGroup.SetVisibility(request);
}
}
[GroupDebug, Button(ButtonSizes.Medium)]
private void DetectFloorVisualGroups()
{
FloorVisualGroups.Clear();
FloorVisualGroups.AddRange(GetComponentsInChildren<FloorVisualGroup>(true));
}
private VisibilityRequest CreateVisibilityRequest()
{
if (floorDetection.IsNull())
{
return new VisibilityRequest
{
VisibilityOriginY = 0,
// These values make the shader never enter upper fade.
UpperThreshold = DisabledUpperThreshold,
UpperMax = DisabledUpperMax,
// These values make the shader never enter lower tint.
LowerThreshold = DisabledLowerThreshold,
LowerMin = DisabledLowerMin,
LowerTintColor = Color.white,
};
}
return new VisibilityRequest
{
VisibilityOriginY = floorDetection.CurrentFloorHeight,
UpperThreshold = upperThreshold,
UpperMax = upperMax,
LowerThreshold = lowerThreshold,
LowerMin = lowerMin,
LowerTintColor = lowerTintColor,
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 701d5f1af3ff45c8a1c270d3210c306a
timeCreated: 1781706921

View File

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using Intrepid.Utilities;
using Sirenix.OdinInspector;
using UnityEngine;
namespace __Prototype.Scripts
{
public struct VisibilityRequest
{
public float VisibilityOriginY { get; set; }
public float UpperThreshold { get; set; }
public float UpperMax { get; set; }
public float LowerThreshold { get; set; }
public float LowerMin { get; set; }
public Color LowerTintColor { get; set; }
}
public sealed class FloorVisualGroup : MonoBehaviour
{
private static readonly int VisibilityOriginYId = Shader.PropertyToID("_VisibilityOriginY");
private static readonly int UpperThresholdId = Shader.PropertyToID("_UpperThreshold");
private static readonly int UpperMaxId = Shader.PropertyToID("_UpperMax");
private static readonly int LowerThresholdId = Shader.PropertyToID("_LowerThreshold");
private static readonly int LowerMinId = Shader.PropertyToID("_LowerMin");
private static readonly int LowerTintColorId = Shader.PropertyToID("_LowerTintColor");
[GroupInjections, SerializeField] private List<Renderer> meshRenderers = new();
private MaterialPropertyBlock Block { get; set; }
private void Awake()
{
Block = new MaterialPropertyBlock();
}
[GroupDebug, Button(ButtonSizes.Medium)]
private void Detect()
{
meshRenderers.Clear();
var rendererArray = GetComponentsInChildren<Renderer>(true);
if (rendererArray.Length > 0)
{
meshRenderers.AddRange(rendererArray);
}
}
public void SetVisibility(VisibilityRequest request)
{
foreach (var meshRenderer in meshRenderers)
{
if (meshRenderer.IsNull()) continue;
meshRenderer.GetPropertyBlock(Block);
Block.SetFloat(VisibilityOriginYId, request.VisibilityOriginY);
Block.SetFloat(UpperThresholdId, request.UpperThreshold);
Block.SetFloat(UpperMaxId, request.UpperMax);
Block.SetFloat(LowerThresholdId, request.LowerThreshold);
Block.SetFloat(LowerMinId, request.LowerMin);
Block.SetColor(LowerTintColorId, request.LowerTintColor);
meshRenderer.SetPropertyBlock(Block);
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4b658634c0194812b40550f65f5d20f2
timeCreated: 1781702512

View File

@ -0,0 +1,46 @@
#ifndef FLOOR_DITHER_INCLUDED
#define FLOOR_DITHER_INCLUDED
void FloorDither_float(
float2 screen_uv,
out float threshold)
{
float2 pixel = floor(screen_uv * _ScreenParams.xy);
float x = fmod(pixel.x, 4.0);
float y = fmod(pixel.y, 4.0);
float index = x + y * 4.0;
float bayer = 0.0;
if (index < 0.5) bayer = 0.0;
else if (index < 1.5) bayer = 8.0;
else if (index < 2.5) bayer = 2.0;
else if (index < 3.5) bayer = 10.0;
else if (index < 4.5) bayer = 12.0;
else if (index < 5.5) bayer = 4.0;
else if (index < 6.5) bayer = 14.0;
else if (index < 7.5) bayer = 6.0;
else if (index < 8.5) bayer = 3.0;
else if (index < 9.5) bayer = 11.0;
else if (index < 10.5) bayer = 1.0;
else if (index < 11.5) bayer = 9.0;
else if (index < 12.5) bayer = 15.0;
else if (index < 13.5) bayer = 7.0;
else if (index < 14.5) bayer = 13.0;
else bayer = 5.0;
threshold = (bayer + 0.5) / 16.0;
}
void FloorDither_half(
half2 screen_uv,
out half threshold)
{
float t;
FloorDither_float(screen_uv, t);
threshold = (half)t;
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cf766c9d67774b2a9dd6e396f537e46f
timeCreated: 1781763544

View File

@ -0,0 +1,87 @@
#ifndef FLOOR_VISIBILITY_INCLUDED
#define FLOOR_VISIBILITY_INCLUDED
void FloorVisibility_float(
float3 WorldPosition,
float VisibilityOriginY,
float UpperThreshold,
float UpperMax,
float LowerThreshold,
float LowerMin,
float3 LowerTintColor,
out float AlphaMultiplier,
out float3 TintMultiplier)
{
float relativeY = WorldPosition.y - VisibilityOriginY;
// ------------------------------------------------------------
// Alpha superior
// ------------------------------------------------------------
// relativeY <= UpperThreshold => alpha 1
// relativeY >= UpperMax => alpha 0
float upperRange = max(UpperMax - UpperThreshold, 0.0001);
float upperT = saturate((relativeY - UpperThreshold) / upperRange);
// Smoothstep manual.
upperT = upperT * upperT * (3.0 - 2.0 * upperT);
float alphaMultiplier = 1.0 - upperT;
// ------------------------------------------------------------
// Tint inferior
// ------------------------------------------------------------
// LowerThreshold e LowerMin devem ser negativos.
//
// relativeY >= LowerThreshold => sem tint
// relativeY <= LowerMin => tint máximo
float lowerRange = max(LowerThreshold - LowerMin, 0.0001);
float lowerT = saturate((LowerThreshold - relativeY) / lowerRange);
// Smoothstep manual.
lowerT = lowerT * lowerT * (3.0 - 2.0 * lowerT);
float3 tintMultiplier = lerp(
float3(1.0, 1.0, 1.0),
LowerTintColor,
lowerT
);
AlphaMultiplier = alphaMultiplier;
TintMultiplier = tintMultiplier;
}
void FloorVisibility_half(
half3 WorldPosition,
half VisibilityOriginY,
half UpperThreshold,
half UpperMax,
half LowerThreshold,
half LowerMin,
half3 LowerTintColor,
out half AlphaMultiplier,
out half3 TintMultiplier)
{
half relativeY = WorldPosition.y - VisibilityOriginY;
half upperRange = max(UpperMax - UpperThreshold, 0.0001h);
half upperT = saturate((relativeY - UpperThreshold) / upperRange);
upperT = upperT * upperT * (3.0h - 2.0h * upperT);
half alphaMultiplier = 1.0h - upperT;
half lowerRange = max(LowerThreshold - LowerMin, 0.0001h);
half lowerT = saturate((LowerThreshold - relativeY) / lowerRange);
lowerT = lowerT * lowerT * (3.0h - 2.0h * lowerT);
half3 tintMultiplier = lerp(
half3(1.0h, 1.0h, 1.0h),
LowerTintColor,
lowerT
);
AlphaMultiplier = alphaMultiplier;
TintMultiplier = tintMultiplier;
}
#endif

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d32d887390aa4988adfa28956c0b736e
timeCreated: 1781760364

View File

@ -16,7 +16,7 @@ Material:
m_LightmapFlags: 2
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
m_CustomRenderQueue: 3000
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
@ -42,12 +42,21 @@ Material:
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Alpha: 1
- _Contrast: 1.5
- _FloorAlpha: 1
- _LowerMin: -1000000
- _LowerThreshold: -1000000
- _QueueControl: 0
- _QueueOffset: 0
- _SideDarkness: 0.6
- _UpperMax: 1000000
- _UpperThreshold: 1000000
- _VisibilityOriginY: 0
m_Colors:
- _BaseColor: {r: 0.33333337, g: 0.8784793, b: 1, a: 1}
- _BaseColor: {r: 0.3333333, g: 0.8784793, b: 1, a: 1}
- _LowerTintColor: {r: 0.16981125, g: 0.16981125, b: 0.16981125, a: 1}
- _Tint: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &1069900037742449899

View File

@ -42,12 +42,21 @@ Material:
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Alpha: 1
- _Contrast: 1.5
- _FloorAlpha: 1
- _LowerMin: -1000000
- _LowerThreshold: -1000000
- _QueueControl: 0
- _QueueOffset: 0
- _SideDarkness: 0.6
- _UpperMax: 1000000
- _UpperThreshold: 1000000
- _VisibilityOriginY: 0
m_Colors:
- _BaseColor: {r: 0.3990299, g: 0.5432971, b: 0.5754717, a: 1}
- _LowerTintColor: {r: 0.16981125, g: 0.16981125, b: 0.16981125, a: 1}
- _Tint: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &1069900037742449899

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -131,7 +131,8 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Core.Grounding.GroundSurface
boxCollider: {fileID: 6392326082573612157}
safe: 1
groundProfileMotion: {fileID: 0}
motionProfile: {fileID: 0}
movementProfiles: []
--- !u!1 &6439449681432079181
GameObject:
m_ObjectHideFlags: 0
@ -257,6 +258,7 @@ GameObject:
- component: {fileID: 8478978465931315779}
- component: {fileID: 3628412641931900360}
- component: {fileID: 221717111884494654}
- component: {fileID: 6239999603407320206}
m_Layer: 31
m_Name: PrototypeMesh
m_TagString: Untagged
@ -336,3 +338,17 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7302436227064528695}
m_Mesh: {fileID: 0}
--- !u!114 &6239999603407320206
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7302436227064528695}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4b658634c0194812b40550f65f5d20f2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::__Prototype.Scripts.FloorVisualGroup
meshRenderers:
- {fileID: 3628412641931900360}

View File

@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 4089360858264239107}
- component: {fileID: 5094209182163755379}
- component: {fileID: 6166895172714925370}
- component: {fileID: 3915984040909972015}
m_Layer: 30
m_Name: PrototypeMesh
m_TagString: Untagged
@ -90,6 +91,20 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1146391786149679500}
m_Mesh: {fileID: 0}
--- !u!114 &3915984040909972015
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1146391786149679500}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4b658634c0194812b40550f65f5d20f2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::__Prototype.Scripts.FloorVisualGroup
meshRenderers:
- {fileID: 5094209182163755379}
--- !u!1 &1846517854702871200
GameObject:
m_ObjectHideFlags: 0

View File

@ -364,6 +364,7 @@ GameObject:
- component: {fileID: 8834117376258967636}
- component: {fileID: 706111140969832978}
- component: {fileID: 3934978131188514466}
- component: {fileID: 2449993904018413455}
m_Layer: 30
m_Name: PrototypeMesh
m_TagString: Untagged
@ -443,3 +444,17 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8841023322301212683}
m_Mesh: {fileID: 0}
--- !u!114 &2449993904018413455
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8841023322301212683}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4b658634c0194812b40550f65f5d20f2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::__Prototype.Scripts.FloorVisualGroup
meshRenderers:
- {fileID: 706111140969832978}

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using __Prototype.Scripts;
using Intrepid.Diagnostics;
using Intrepid.Gameplay.Prototyping;
using UnityEditor;
@ -19,6 +20,7 @@ namespace Editor.GardensStageEditor.Baker
{
public static void BuildStage(StageBuilderRequest request)
{
var floorManager = request.Root.AddComponent<FloorManager>();
foreach (var stageFloorDefinition in request.Stage.floors)
{
var cellsG = new HashSet<Vector2Int>();

View File

@ -16,6 +16,7 @@ namespace Intrepid.Core.Camera
public sealed class CameraBoundary : MonoBehaviour
{
[GroupInjections, SerializeField] private BoxCollider boxCollider;
[GroupConfigurations, SerializeField] private CameraZoomLevel cameraZoomLevel = CameraZoomLevel.None;
[GroupConfigurations, SerializeField, Min(0f)] private float cameraPadding = 0.5f;
[GroupConfigurations, SerializeField, Min(0.1f)] private float triggerHeight = 5f;
@ -47,7 +48,8 @@ namespace Intrepid.Core.Camera
{
Proxy.Instance.EventBus.Raise(new CameraBoundaryEnterEvent
{
Boundary = this
Boundary = this,
CameraZoomLevel = cameraZoomLevel,
});
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using Intrepid.Core.Camera.Events;
using Intrepid.GameManagers;
using Intrepid.SimpleEvents;
using Intrepid.Utilities;
using UnityEngine;
@ -44,11 +45,14 @@ namespace Intrepid.Core.Camera
protected override void Subscriptions()
{
Subscribe<CameraBoundaryEnterEvent>(e => Enter(e.Boundary));
Subscribe<CameraBoundaryEnterEvent>(e => Enter(e.Boundary, e.CameraZoomLevel));
Subscribe<CameraBoundaryExitEvent>(e => Exit(e.Boundary));
}
private void Enter(CameraBoundary boundary)
private void Enter(
CameraBoundary boundary,
// for testing...
CameraZoomLevel zoomLevel)
{
if (boundary.IsNull())
{
@ -61,6 +65,11 @@ namespace Intrepid.Core.Camera
}
activeBoundaries.Add(boundary);
// for testing...
Proxy.Instance.EventBus.Raise(new CameraZoomEvent
{
ZoomLevel = zoomLevel,
});
hasFadingOutBounds = false;
targetWeight = 1f;

View File

@ -5,5 +5,8 @@ namespace Intrepid.Core.Camera.Events
public class CameraBoundaryEnterEvent : IEventBase
{
public CameraBoundary Boundary { get; set; }
// for testing...
public CameraZoomLevel CameraZoomLevel { get; set; }
}
}

View File

@ -92,6 +92,14 @@ namespace Intrepid.Gameplay.Prototyping
sizeX,
sizeZ);
// Bottom (face up)
AddGridFace(vertices, triangles, uvs,
new Vector3(-halfX, -halfY, halfZ),
Vector3.right,
Vector3.back,
sizeX,
sizeZ);
// Back
AddGridFace(vertices, triangles, uvs,
new Vector3(halfX, -halfY, -halfZ),
@ -124,5 +132,97 @@ namespace Intrepid.Gameplay.Prototyping
sizeZ,
sizeY);
}
public static void AddQuadFace(
List<Vector3> vertices,
List<int> triangles,
List<Vector2> uvs,
Vector3 origin,
Vector3 axisU,
Vector3 axisV,
Vector2 uv00,
Vector2 uv10,
Vector2 uv11,
Vector2 uv01)
{
var index = vertices.Count;
var p00 = origin;
var p10 = origin + axisU;
var p11 = origin + axisU + axisV;
var p01 = origin + axisV;
vertices.Add(p00);
vertices.Add(p10);
vertices.Add(p11);
vertices.Add(p01);
triangles.Add(index + 0);
triangles.Add(index + 1);
triangles.Add(index + 2);
triangles.Add(index + 0);
triangles.Add(index + 2);
triangles.Add(index + 3);
uvs.Add(uv00);
uvs.Add(uv10);
uvs.Add(uv11);
uvs.Add(uv01);
}
public static void AddHorizontalCapFace(
List<Vector3> vertices,
List<int> triangles,
List<Vector2> uvs,
float y,
float halfX,
float halfZ,
float uvScaleX,
float uvScaleZ)
{
AddQuadFace(
vertices,
triangles,
uvs,
new Vector3(-halfX, y, halfZ),
Vector3.right * (halfX * 2f),
Vector3.back * (halfZ * 2f),
new Vector2(0f, 0f),
new Vector2(uvScaleX, 0f),
new Vector2(uvScaleX, uvScaleZ),
new Vector2(0f, uvScaleZ)
);
}
public static void AddInternalHorizontalCapFaces(
List<Vector3> vertices,
List<int> triangles,
List<Vector2> uvs,
int sizeX,
int sizeY,
int sizeZ,
float halfX,
float halfY,
float halfZ,
int capStep = 1)
{
capStep = Mathf.Max(1, capStep);
for (var height = capStep; height < sizeY; height += capStep)
{
var y = -halfY + height;
AddHorizontalCapFace(
vertices,
triangles,
uvs,
y,
halfX,
halfZ,
sizeX,
sizeZ
);
}
}
}
}

View File

@ -41,15 +41,61 @@ namespace Intrepid.Gameplay.Prototyping
offset_y.y = Mathf.Clamp(contact_offset_y.y, 0f, 2f);
}
// protected override void Generate()
// {
// var vertices = new List<Vector3>();
// var triangles = new List<int>();
// var uvs = new List<Vector2>();
//
// MeshUtils.AddCubeFaces(vertices, triangles, uvs,
// sizeX, sizeY, sizeZ,
// sizeX * 0.5f, sizeY * 0.5f, sizeZ * 0.5f);
//
// PrototypeModel.BuildMesh(new MeshData(
// vertices.ToArray(),
// triangles.ToArray(),
// uvs.ToArray()));
//
// var offsetX = offset_x.x + offset_x.y;
// var offsetY = offset_y.x + offset_y.y;
// PrototypeModel.BoxCollider.size = new Vector3(sizeX + offsetX, sizeY, sizeZ + offsetY);
// PrototypeModel.BoxCollider.center = new Vector3((offset_x.x - offset_x.y) / 2f, 0f, (offset_y.x - offset_y.y) / 2f);
// PrototypeModel.transform.localPosition = new Vector3(0f, sizeY / 2f, 0f);
// }
protected override void Generate()
{
var vertices = new List<Vector3>();
var triangles = new List<int>();
var uvs = new List<Vector2>();
MeshUtils.AddCubeFaces(vertices, triangles, uvs,
sizeX, sizeY, sizeZ,
sizeX * 0.5f, sizeY * 0.5f, sizeZ * 0.5f);
var halfX = sizeX * 0.5f;
var halfY = sizeY * 0.5f;
var halfZ = sizeZ * 0.5f;
MeshUtils.AddCubeFaces(
vertices,
triangles,
uvs,
sizeX,
sizeY,
sizeZ,
halfX,
halfY,
halfZ
);
// MeshUtils.AddInternalHorizontalCapFaces(
// vertices,
// triangles,
// uvs,
// sizeX,
// sizeY,
// sizeZ,
// halfX,
// halfY,
// halfZ
// );
PrototypeModel.BuildMesh(new MeshData(
vertices.ToArray(),
@ -58,9 +104,24 @@ namespace Intrepid.Gameplay.Prototyping
var offsetX = offset_x.x + offset_x.y;
var offsetY = offset_y.x + offset_y.y;
PrototypeModel.BoxCollider.size = new Vector3(sizeX + offsetX, sizeY, sizeZ + offsetY);
PrototypeModel.BoxCollider.center = new Vector3((offset_x.x - offset_x.y) / 2f, 0f, (offset_y.x - offset_y.y) / 2f);
PrototypeModel.transform.localPosition = new Vector3(0f, sizeY / 2f, 0f);
PrototypeModel.BoxCollider.size = new Vector3(
sizeX + offsetX,
sizeY,
sizeZ + offsetY
);
PrototypeModel.BoxCollider.center = new Vector3(
(offset_x.x - offset_x.y) / 2f,
0f,
(offset_y.x - offset_y.y) / 2f
);
PrototypeModel.transform.localPosition = new Vector3(
0f,
sizeY / 2f,
0f
);
}
}
}

View File

@ -17,7 +17,7 @@ PhysicsManager:
m_EnableAdaptiveForce: 0
m_ClothInterCollisionDistance: 0.1
m_ClothInterCollisionStiffness: 0.2
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffdfffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffff3fdfffff3f
m_SimulationMode: 0
m_AutoSyncTransforms: 0
m_ReuseCollisionCallbacks: 1