improvements to multi-cables

This commit is contained in:
Felix 2023-12-04 08:26:05 +01:00
parent cd25f31a77
commit d6428dba3e
8 changed files with 940 additions and 97 deletions

View File

@ -5,18 +5,18 @@ using static System.Math;
/** Cable Joints algorithm based on Paper by Matthias Müller, Nuttapong Chentanez, Stefan Jeschke and Miles Macklin*/
public static class CableJointsAlgorithm {
public static void TimeStep(List<GameObject> cableStartingPoints) {
public static void TimeStep(List<RollerProperties> cableStartingPoints) {
//handle each cable individually
foreach (var cable in cableStartingPoints) {
float totalDist = 0;
//calculate new attachment points for all joints
for (var go = cable; go != null; go = go.GetComponent<RollerProperties>().linkTo) {
if (go.GetComponent<RollerProperties>().linkTo != null) {
var dist = go.GetComponent<DistanceJoint2D>();
var rp = go.GetComponent<RollerProperties>();
var (left, right) = rp.updateDistanceJoints();
rp.actualDistance = dist.ActualDistanceInWorld();
for (var rollerProperties = cable; rollerProperties != null; rollerProperties = rollerProperties.linkTo) {
if (rollerProperties.linkTo != null) {
var dist = rollerProperties.GetComponent<DistanceJoint2D>();
var (left, right) = rollerProperties.updateDistanceJoints();
rollerProperties.actualDistance = dist.ActualDistanceInWorld();
if (left.HasValue) {
dist.distance -= left.Value;

View File

@ -3,7 +3,7 @@ using TMPro;
using UnityEngine;
public class Controller : MonoBehaviour {
private List<GameObject> cableStartingPoints = new();
private List<RollerProperties> cableStartingPoints = new();
//Initialize
void Awake() {
@ -52,11 +52,7 @@ public class Controller : MonoBehaviour {
go.AddComponent<PolygonCollider2D>();
//build list of cable starting objects
cableStartingPoints.Add(go);
if (rp.linkTo != null) {
cableStartingPoints.Remove(rp.linkTo);
}
cableStartingPoints.Add(rp);
Debug.Log("Initialized roller: " + go.name);
}
}
@ -66,64 +62,87 @@ public class Controller : MonoBehaviour {
//prepare joints
foreach (var go in gameObjects) {
RollerProperties rp = go.GetComponent<RollerProperties>();
if (rp != null) {
if (rp.linkTo != null) {
var dist = go.AddComponent<DistanceJoint2D>();
dist.enableCollision = true;
dist.connectedBody = rp.linkTo.GetComponent<Rigidbody2D>();
dist.maxDistanceOnly = true;
dist.autoConfigureDistance = false;
rp.distanceJoint2D = dist;
//set fixed points only once
if (rp.useFixedAttachmentPoint) {
dist.anchor = rp.attachmentPoint;
RollerProperties[] rpArr = go.GetComponents<RollerProperties>();
foreach (var rp in rpArr) {
if (rp != null) {
if (rp.linkTo != null) {
var dist = go.AddComponent<DistanceJoint2D>();
dist.enableCollision = true;
dist.connectedBody = rp.linkTo.GetComponent<Rigidbody2D>();
dist.maxDistanceOnly = true;
dist.autoConfigureDistance = false;
rp.distanceJoint2D = dist;
//remove linked to objects, so only starting points remain
cableStartingPoints.Remove(rp.linkTo);
//set fixed points only once
if (rp.useFixedAttachmentPoint) {
dist.anchor = rp.attachmentPoint;
}
if (rp.linkTo.useFixedAttachmentPoint) {
dist.connectedAnchor = rp.linkTo.attachmentPoint;
}
//update roller tangent attachments
rp.updateDistanceJoints();
rp.actualDistance = dist.distance = dist.ActualDistanceInWorld();
}
if (rp.linkTo.GetComponent<RollerProperties>().useFixedAttachmentPoint) {
dist.connectedAnchor = rp.linkTo.GetComponent<RollerProperties>().attachmentPoint;
if (rp.movement is RollerProperties.RotationType.Rotatable
or RollerProperties.RotationType.Powered) {
var wheel = go.AddComponent<HingeJoint2D>();
wheel.anchor = Vector2.zero;
if (rp.movement == RollerProperties.RotationType.Powered) {
wheel.useMotor = true;
wheel.motor = new JointMotor2D()
{ maxMotorTorque = 10000, motorSpeed = rp.clockwise ? 10 : -10 };
}
}
//update roller tangent attachments
rp.updateDistanceJoints();
rp.actualDistance = dist.distance = dist.ActualDistanceInWorld();
//create names on objects
GameObject text = new GameObject(go.name + "_text");
text.transform.parent = canvas.transform;
var textMeshPro = text.AddComponent<TextMeshPro>();
// textMeshPro.material.shader.GetComponent<Outline>().enabled = true;
// textMeshPro.material.shader.GetComponent<Outline>().useGraphicAlpha = false;
// textMeshPro.material.shader.GetComponent<Outline>().effectDistance = new Vector2(1, -1);
textMeshPro.fontSize = .3f;
textMeshPro.color = Color.black;
textMeshPro.fontStyle = FontStyles.Bold;
textMeshPro.outlineColor = Color.black;
textMeshPro.outlineWidth = 0.2f;
textMeshPro.horizontalAlignment = HorizontalAlignmentOptions.Center;
textMeshPro.verticalAlignment = VerticalAlignmentOptions.Middle;
textMeshPro.transform.localScale = new Vector3(100, 100, 1);
textMeshPro.fontSize = .03f;
textMeshPro.autoSizeTextContainer = true;
textMeshPro.fontSizeMin = 0;
rp.text = text;
}
if (rp.movement is RollerProperties.RotationType.Rotatable or RollerProperties.RotationType.Powered) {
var wheel = go.AddComponent<HingeJoint2D>();
wheel.anchor = Vector2.zero;
if (rp.movement == RollerProperties.RotationType.Powered) {
wheel.useMotor = true;
wheel.motor = new JointMotor2D() { maxMotorTorque = 10000, motorSpeed = rp.clockwise?10:-10 };
}
}
//create names on objects
GameObject text = new GameObject(go.name + "_text");
text.transform.parent = canvas.transform;
var textMeshPro = text.AddComponent<TextMeshPro>();
// textMeshPro.material.shader.GetComponent<Outline>().enabled = true;
// textMeshPro.material.shader.GetComponent<Outline>().useGraphicAlpha = false;
// textMeshPro.material.shader.GetComponent<Outline>().effectDistance = new Vector2(1, -1);
textMeshPro.fontSize = .3f;
textMeshPro.color = Color.black;
textMeshPro.fontStyle = FontStyles.Bold;
textMeshPro.outlineColor = Color.black;
textMeshPro.outlineWidth = 0.2f;
textMeshPro.horizontalAlignment = HorizontalAlignmentOptions.Center;
textMeshPro.verticalAlignment = VerticalAlignmentOptions.Middle;
textMeshPro.transform.localScale = new Vector3(100, 100, 1);
textMeshPro.fontSize = .03f;
textMeshPro.autoSizeTextContainer = true;
textMeshPro.fontSizeMin = 0;
rp.text = text;
}
}
Debug.Log("Initialized "+cableStartingPoints.Count+" cables");
var cableNum = 0;
//find and report loops of cables
foreach (var cable in cableStartingPoints) {
List<RollerProperties> visitedSegments = new();
for (var segment = cable; segment != null; segment = segment.linkTo) {
if (visitedSegments.Contains(segment)) {
cableStartingPoints = null;
Debug.LogError("Fix cable loop in scene with object "+segment.gameObject.name);
break;
}
visitedSegments.Add(segment);
}
}
}
private float waitedFrames = 0;
// Update is called once per frame
void Update() {

View File

@ -1,12 +1,17 @@
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Serialization;
[System.Serializable]
public class RollerProperties : MonoBehaviour {
//settings
/// rotation direction, used to determine attachment sides for the cables
[SerializeField] public bool clockwise = false;
[SerializeField] public GameObject linkTo = null;
[SerializeField] public RollerProperties linkTo = null;
[SerializeField] public List<RollerProperties> listTest;
[SerializeField] public RollerProperties[] arrayTest;
[SerializeField] public RotationType movement = RotationType.Fixed;
[FormerlySerializedAs("fixedAttachmentPoint")] [SerializeField] public bool useFixedAttachmentPoint = false;
[SerializeField] public Vector2 attachmentPoint = new Vector2(0, 0);
@ -15,24 +20,24 @@ public class RollerProperties : MonoBehaviour {
//references
protected internal GameObject text;
protected internal DistanceJoint2D distanceJoint2D = null;
protected internal GameObject linkToGameObject => linkTo.gameObject;
//simulation properties
protected internal float actualDistance;
public (float?, float?) updateDistanceJoints() {
Vector2? left = null, right = null;
if (linkTo != null) {
if (useFixedAttachmentPoint && !linkTo.GetComponent<RollerProperties>().useFixedAttachmentPoint) {
if (useFixedAttachmentPoint && !linkTo.useFixedAttachmentPoint) {
//left = attachmentPoint;
right = CableJointsAlgorithm.TangentPointCircle(gameObject, linkTo);
right = CableJointsAlgorithm.TangentPointCircle(gameObject, linkToGameObject);
}
else if (!useFixedAttachmentPoint && linkTo.GetComponent<RollerProperties>().useFixedAttachmentPoint) {
left = CableJointsAlgorithm.TangentPointCircle(linkTo,gameObject);
else if (!useFixedAttachmentPoint && linkTo.useFixedAttachmentPoint) {
left = CableJointsAlgorithm.TangentPointCircle(linkToGameObject,gameObject);
//right = linkTo.GetComponent<RollerProperties>().attachmentPoint;
}
else if (!useFixedAttachmentPoint && !linkTo.GetComponent<RollerProperties>().useFixedAttachmentPoint) {
(left, right) = CableJointsAlgorithm.TangentCircleCircle(gameObject, linkTo);
else if (!useFixedAttachmentPoint && !linkTo.useFixedAttachmentPoint) {
(left, right) = CableJointsAlgorithm.TangentCircleCircle(gameObject, linkToGameObject);
}
/*
else {
@ -53,7 +58,7 @@ public class RollerProperties : MonoBehaviour {
distanceJoint2D.anchor = left.Value;
}
if (right.HasValue) {
rightSurfaceDist = CableJointsAlgorithm.CirclePointDistance(linkTo.transform.TransformPoint(distanceJoint2D.connectedAnchor) , linkTo.transform.TransformPoint(right.Value), linkTo);
rightSurfaceDist = CableJointsAlgorithm.CirclePointDistance(linkToGameObject.transform.TransformPoint(distanceJoint2D.connectedAnchor) , linkToGameObject.transform.TransformPoint(right.Value), linkToGameObject);
// rightSurfaceDist = (linkTo.transform.TransformPoint(distanceJoint2D.connectedAnchor) - linkTo.transform.TransformPoint(right.Value)).magnitude;

View File

@ -186,9 +186,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1983224135}
linkTo: {fileID: 1983224138}
listTest: []
arrayTest: []
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
@ -540,9 +541,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 1
linkTo: {fileID: 0}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}
@ -628,9 +630,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1306628726}
linkTo: {fileID: 1306628728}
listTest: []
arrayTest: []
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
@ -746,9 +749,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 1
clockwise: 0
linkTo: {fileID: 1073098765}
linkTo: {fileID: 1073098766}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}
@ -901,9 +905,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1588024395}
linkTo: {fileID: 1588024396}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}

View File

@ -438,7 +438,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 1
linkTo: {fileID: 0}
movement: 3
@ -541,9 +540,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1786298617}
linkTo: {fileID: 1786298619}
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
@ -629,9 +627,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1306628726}
linkTo: {fileID: 1306628728}
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
@ -747,7 +744,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 1
linkTo: {fileID: 0}
movement: 3
@ -850,9 +846,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 1
clockwise: 0
linkTo: {fileID: 1492136707}
linkTo: {fileID: 1492136709}
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}
@ -953,9 +948,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 1
clockwise: 0
linkTo: {fileID: 1588024395}
linkTo: {fileID: 1588024396}
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}

View File

@ -435,7 +435,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 1
linkTo: {fileID: 0}
movement: 3
@ -523,9 +522,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 0
clockwise: 0
linkTo: {fileID: 1306628726}
linkTo: {fileID: 1306628728}
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
@ -641,9 +639,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
start: 1
clockwise: 0
linkTo: {fileID: 1588024395}
linkTo: {fileID: 1588024396}
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}

816
Assets/Scenes/Winch.unity Normal file
View File

@ -0,0 +1,816 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &870637784
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 870637785}
m_Layer: 0
m_Name: Objects
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &870637785
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 870637784}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.2534463, y: -0.7609657, z: -0.06719851}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1947610090}
- {fileID: 1073098768}
- {fileID: 1983224137}
- {fileID: 1306628727}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1073098765
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1073098768}
- component: {fileID: 1073098767}
- component: {fileID: 1073098766}
m_Layer: 0
m_Name: left
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1073098766
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1073098765}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
clockwise: 0
linkTo: {fileID: 1983224138}
listTest: []
arrayTest: []
movement: 1
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
--- !u!212 &1073098767
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1073098765}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1073098768
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1073098765}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.24, y: 9.71, z: 0.06719851}
m_LocalScale: {x: 3, y: 3, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 870637785}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1142910635
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1142910638}
- component: {fileID: 1142910637}
- component: {fileID: 1142910636}
m_Layer: 0
m_Name: Floor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!61 &1142910636
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1142910635}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.5}
oldSize: {x: 1, y: 1}
newSize: {x: 1, y: 1}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!212 &1142910637
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1142910635}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1142910638
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1142910635}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.05, y: -8.67, z: 0}
m_LocalScale: {x: 30.073181, y: 1.5527159, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1200065142
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1200065145}
- component: {fileID: 1200065144}
- component: {fileID: 1200065143}
- component: {fileID: 1200065146}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1200065143
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200065142}
m_Enabled: 1
--- !u!20 &1200065144
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200065142}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.34117648, g: 0.34117648, b: 0.34117648, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 8
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &1200065145
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200065142}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -10}
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!114 &1200065146
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200065142}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d406720d26e7d1e4ba8afd140d67de7e, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1306628726
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1306628727}
- component: {fileID: 1306628729}
- component: {fileID: 1306628728}
m_Layer: 0
m_Name: Weight
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1306628727
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1306628726}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.04, y: -3.17, z: 0.06719851}
m_LocalScale: {x: 4, y: 3, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 870637785}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1306628728
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1306628726}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
clockwise: 1
linkTo: {fileID: 1306628728}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}
--- !u!212 &1306628729
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1306628726}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &1947610089
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1947610090}
- component: {fileID: 1947610092}
- component: {fileID: 1947610091}
m_Layer: 0
m_Name: Weight (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1947610090
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1947610089}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -10.71, y: -3.08, z: 0.06719851}
m_LocalScale: {x: 3, y: 3, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 870637785}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1947610091
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1947610089}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
clockwise: 0
linkTo: {fileID: 1073098766}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 1
attachmentPoint: {x: 0, y: 0.5}
--- !u!212 &1947610092
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1947610089}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &1983224135
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1983224137}
- component: {fileID: 1983224136}
- component: {fileID: 1983224138}
m_Layer: 0
m_Name: middle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &1983224136
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1983224135}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 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: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: -2413806693520163455, guid: ebe73ca9363db456bacf42c025bb4847, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1983224137
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1983224135}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.49, y: 4.28, z: 0.06719851}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 870637785}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1983224138
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1983224135}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 371c00a70d1ac344fae68d1834928173, type: 3}
m_Name:
m_EditorClassIdentifier:
clockwise: 0
linkTo: {fileID: 1947610091}
listTest: []
arrayTest: []
movement: 3
useFixedAttachmentPoint: 0
attachmentPoint: {x: 0, y: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1200065145}
- {fileID: 1142910638}
- {fileID: 870637785}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9f78bb615f815133bbfaa144ed590140
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: