├── .gitattributes ├── Assets ├── Scenes.meta └── Scenes │ ├── 6089b642c0a5b0a4f7b22aae0d60b8bb 1.jpg │ ├── 6089b642c0a5b0a4f7b22aae0d60b8bb 1.jpg.meta │ ├── 6089b642c0a5b0a4f7b22aae0d60b8bb.jpg │ ├── 6089b642c0a5b0a4f7b22aae0d60b8bb.jpg.meta │ ├── Mesh.unity │ ├── Mesh.unity.meta │ ├── SampleScene.unity │ ├── SampleScene.unity.meta │ ├── circle.shader │ ├── circle.shader.meta │ ├── meshScript.cs │ ├── meshScript.cs.meta │ ├── rope.cs │ ├── rope.cs.meta │ ├── rope.mat │ ├── rope.mat.meta │ ├── rope.shader │ ├── rope.shader.meta │ ├── ropeCircle.mat │ ├── ropeCircle.mat.meta │ ├── ropeEnd.cs │ └── ropeEnd.cs.meta └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 966720172304b49079d591cdd99c51d5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb 1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yellowjump/unity_mesh_rope/2a729ccffd03b5673638bcda847f6579722901ca/Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb 1.jpg -------------------------------------------------------------------------------- /Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb 1.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc7c8c853763846b18331417ee3b761d 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: cec23982227d14e89af46efd4482d246 101 | internalID: 0 102 | vertices: [] 103 | indices: 104 | edges: [] 105 | weights: [] 106 | secondaryTextures: [] 107 | spritePackingTag: 108 | pSDRemoveMatte: 0 109 | pSDShowRemoveMatteOption: 0 110 | userData: 111 | assetBundleName: 112 | assetBundleVariant: 113 | -------------------------------------------------------------------------------- /Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yellowjump/unity_mesh_rope/2a729ccffd03b5673638bcda847f6579722901ca/Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb.jpg -------------------------------------------------------------------------------- /Assets/Scenes/6089b642c0a5b0a4f7b22aae0d60b8bb.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd7e97eaf0f7a4ba892cf6ca6bccc14f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 10 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 0 38 | wrapV: 0 39 | wrapW: 0 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | - serializedVersion: 2 73 | buildTarget: Standalone 74 | maxTextureSize: 2048 75 | resizeAlgorithm: 0 76 | textureFormat: -1 77 | textureCompression: 1 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | androidETC2FallbackOverride: 0 83 | - serializedVersion: 2 84 | buildTarget: Android 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | androidETC2FallbackOverride: 0 94 | spriteSheet: 95 | serializedVersion: 2 96 | sprites: [] 97 | outline: [] 98 | physicsShape: [] 99 | bones: [] 100 | spriteID: ead0f0f8a02ac43b98cbeb016a529d5e 101 | internalID: 0 102 | vertices: [] 103 | indices: 104 | edges: [] 105 | weights: [] 106 | secondaryTextures: [] 107 | spritePackingTag: 108 | pSDRemoveMatte: 0 109 | pSDShowRemoveMatteOption: 0 110 | userData: 111 | assetBundleName: 112 | assetBundleVariant: 113 | -------------------------------------------------------------------------------- /Assets/Scenes/Mesh.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ShowResolutionOverlay: 1 98 | m_ExportTrainingData: 0 99 | m_LightingDataAsset: {fileID: 0} 100 | m_UseShadowmask: 1 101 | --- !u!196 &4 102 | NavMeshSettings: 103 | serializedVersion: 2 104 | m_ObjectHideFlags: 0 105 | m_BuildSettings: 106 | serializedVersion: 2 107 | agentTypeID: 0 108 | agentRadius: 0.5 109 | agentHeight: 2 110 | agentSlope: 45 111 | agentClimb: 0.4 112 | ledgeDropHeight: 0 113 | maxJumpAcrossDistance: 0 114 | minRegionArea: 2 115 | manualCellSize: 0 116 | cellSize: 0.16666667 117 | manualTileSize: 0 118 | tileSize: 256 119 | accuratePlacement: 0 120 | debug: 121 | m_Flags: 0 122 | m_NavMeshData: {fileID: 0} 123 | --- !u!1 &147237011 124 | GameObject: 125 | m_ObjectHideFlags: 0 126 | m_CorrespondingSourceObject: {fileID: 0} 127 | m_PrefabInstance: {fileID: 0} 128 | m_PrefabAsset: {fileID: 0} 129 | serializedVersion: 6 130 | m_Component: 131 | - component: {fileID: 147237014} 132 | - component: {fileID: 147237013} 133 | - component: {fileID: 147237012} 134 | m_Layer: 0 135 | m_Name: column (2) 136 | m_TagString: Untagged 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!58 &147237012 142 | CircleCollider2D: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 147237011} 148 | m_Enabled: 1 149 | m_Density: 1 150 | m_Material: {fileID: 0} 151 | m_IsTrigger: 0 152 | m_UsedByEffector: 0 153 | m_UsedByComposite: 0 154 | m_Offset: {x: 0, y: 0} 155 | serializedVersion: 2 156 | m_Radius: 0.1 157 | --- !u!212 &147237013 158 | SpriteRenderer: 159 | m_ObjectHideFlags: 0 160 | m_CorrespondingSourceObject: {fileID: 0} 161 | m_PrefabInstance: {fileID: 0} 162 | m_PrefabAsset: {fileID: 0} 163 | m_GameObject: {fileID: 147237011} 164 | m_Enabled: 1 165 | m_CastShadows: 0 166 | m_ReceiveShadows: 0 167 | m_DynamicOccludee: 1 168 | m_MotionVectors: 1 169 | m_LightProbeUsage: 1 170 | m_ReflectionProbeUsage: 1 171 | m_RenderingLayerMask: 1 172 | m_RendererPriority: 0 173 | m_Materials: 174 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 175 | m_StaticBatchInfo: 176 | firstSubMesh: 0 177 | subMeshCount: 0 178 | m_StaticBatchRoot: {fileID: 0} 179 | m_ProbeAnchor: {fileID: 0} 180 | m_LightProbeVolumeOverride: {fileID: 0} 181 | m_ScaleInLightmap: 1 182 | m_PreserveUVs: 0 183 | m_IgnoreNormalsForChartDetection: 0 184 | m_ImportantGI: 0 185 | m_StitchLightmapSeams: 1 186 | m_SelectedEditorRenderState: 0 187 | m_MinimumChartSize: 4 188 | m_AutoUVMaxDistance: 0.5 189 | m_AutoUVMaxAngle: 89 190 | m_LightmapParameters: {fileID: 0} 191 | m_SortingLayerID: 0 192 | m_SortingLayer: 0 193 | m_SortingOrder: 0 194 | m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} 195 | m_Color: {r: 1, g: 1, b: 1, a: 1} 196 | m_FlipX: 0 197 | m_FlipY: 0 198 | m_DrawMode: 0 199 | m_Size: {x: 0.2, y: 0.2} 200 | m_AdaptiveModeThreshold: 0.5 201 | m_SpriteTileMode: 0 202 | m_WasSpriteAssigned: 1 203 | m_MaskInteraction: 0 204 | m_SpriteSortPoint: 0 205 | --- !u!4 &147237014 206 | Transform: 207 | m_ObjectHideFlags: 0 208 | m_CorrespondingSourceObject: {fileID: 0} 209 | m_PrefabInstance: {fileID: 0} 210 | m_PrefabAsset: {fileID: 0} 211 | m_GameObject: {fileID: 147237011} 212 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 213 | m_LocalPosition: {x: 10.7, y: 32.4, z: 0} 214 | m_LocalScale: {x: 50, y: 50, z: 1} 215 | m_Children: [] 216 | m_Father: {fileID: 0} 217 | m_RootOrder: 6 218 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 219 | --- !u!1 &191149643 220 | GameObject: 221 | m_ObjectHideFlags: 0 222 | m_CorrespondingSourceObject: {fileID: 0} 223 | m_PrefabInstance: {fileID: 0} 224 | m_PrefabAsset: {fileID: 0} 225 | serializedVersion: 6 226 | m_Component: 227 | - component: {fileID: 191149645} 228 | - component: {fileID: 191149644} 229 | - component: {fileID: 191149646} 230 | - component: {fileID: 191149647} 231 | m_Layer: 0 232 | m_Name: ropebody 233 | m_TagString: Untagged 234 | m_Icon: {fileID: 0} 235 | m_NavMeshLayer: 0 236 | m_StaticEditorFlags: 0 237 | m_IsActive: 1 238 | --- !u!114 &191149644 239 | MonoBehaviour: 240 | m_ObjectHideFlags: 0 241 | m_CorrespondingSourceObject: {fileID: 0} 242 | m_PrefabInstance: {fileID: 0} 243 | m_PrefabAsset: {fileID: 0} 244 | m_GameObject: {fileID: 191149643} 245 | m_Enabled: 1 246 | m_EditorHideFlags: 0 247 | m_Script: {fileID: 11500000, guid: f96886a8e1fad4a66b1894b14b8877d7, type: 3} 248 | m_Name: 249 | m_EditorClassIdentifier: 250 | meshVert: [] 251 | meshTriangles: 252 | meshUV: [] 253 | Width: 1 254 | pointNum: 0 255 | --- !u!4 &191149645 256 | Transform: 257 | m_ObjectHideFlags: 0 258 | m_CorrespondingSourceObject: {fileID: 0} 259 | m_PrefabInstance: {fileID: 0} 260 | m_PrefabAsset: {fileID: 0} 261 | m_GameObject: {fileID: 191149643} 262 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 263 | m_LocalPosition: {x: 0, y: 0, z: 0} 264 | m_LocalScale: {x: 1, y: 1, z: 1} 265 | m_Children: [] 266 | m_Father: {fileID: 0} 267 | m_RootOrder: 1 268 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 269 | --- !u!33 &191149646 270 | MeshFilter: 271 | m_ObjectHideFlags: 0 272 | m_CorrespondingSourceObject: {fileID: 0} 273 | m_PrefabInstance: {fileID: 0} 274 | m_PrefabAsset: {fileID: 0} 275 | m_GameObject: {fileID: 191149643} 276 | m_Mesh: {fileID: 0} 277 | --- !u!23 &191149647 278 | MeshRenderer: 279 | m_ObjectHideFlags: 0 280 | m_CorrespondingSourceObject: {fileID: 0} 281 | m_PrefabInstance: {fileID: 0} 282 | m_PrefabAsset: {fileID: 0} 283 | m_GameObject: {fileID: 191149643} 284 | m_Enabled: 1 285 | m_CastShadows: 1 286 | m_ReceiveShadows: 1 287 | m_DynamicOccludee: 1 288 | m_MotionVectors: 1 289 | m_LightProbeUsage: 1 290 | m_ReflectionProbeUsage: 1 291 | m_RenderingLayerMask: 1 292 | m_RendererPriority: 0 293 | m_Materials: 294 | - {fileID: 2100000, guid: 65d2f5139ebf045fa93479472dfb4113, type: 2} 295 | m_StaticBatchInfo: 296 | firstSubMesh: 0 297 | subMeshCount: 0 298 | m_StaticBatchRoot: {fileID: 0} 299 | m_ProbeAnchor: {fileID: 0} 300 | m_LightProbeVolumeOverride: {fileID: 0} 301 | m_ScaleInLightmap: 1 302 | m_PreserveUVs: 0 303 | m_IgnoreNormalsForChartDetection: 0 304 | m_ImportantGI: 0 305 | m_StitchLightmapSeams: 1 306 | m_SelectedEditorRenderState: 3 307 | m_MinimumChartSize: 4 308 | m_AutoUVMaxDistance: 0.5 309 | m_AutoUVMaxAngle: 89 310 | m_LightmapParameters: {fileID: 0} 311 | m_SortingLayerID: 0 312 | m_SortingLayer: 0 313 | m_SortingOrder: 0 314 | --- !u!1 &1006784765 315 | GameObject: 316 | m_ObjectHideFlags: 0 317 | m_CorrespondingSourceObject: {fileID: 0} 318 | m_PrefabInstance: {fileID: 0} 319 | m_PrefabAsset: {fileID: 0} 320 | serializedVersion: 6 321 | m_Component: 322 | - component: {fileID: 1006784768} 323 | - component: {fileID: 1006784767} 324 | - component: {fileID: 1006784766} 325 | - component: {fileID: 1006784769} 326 | - component: {fileID: 1006784770} 327 | m_Layer: 0 328 | m_Name: ropeEnd 329 | m_TagString: Untagged 330 | m_Icon: {fileID: 0} 331 | m_NavMeshLayer: 0 332 | m_StaticEditorFlags: 0 333 | m_IsActive: 1 334 | --- !u!58 &1006784766 335 | CircleCollider2D: 336 | m_ObjectHideFlags: 0 337 | m_CorrespondingSourceObject: {fileID: 0} 338 | m_PrefabInstance: {fileID: 0} 339 | m_PrefabAsset: {fileID: 0} 340 | m_GameObject: {fileID: 1006784765} 341 | m_Enabled: 1 342 | m_Density: 1 343 | m_Material: {fileID: 0} 344 | m_IsTrigger: 0 345 | m_UsedByEffector: 0 346 | m_UsedByComposite: 0 347 | m_Offset: {x: 0, y: 0} 348 | serializedVersion: 2 349 | m_Radius: 0.1 350 | --- !u!212 &1006784767 351 | SpriteRenderer: 352 | m_ObjectHideFlags: 0 353 | m_CorrespondingSourceObject: {fileID: 0} 354 | m_PrefabInstance: {fileID: 0} 355 | m_PrefabAsset: {fileID: 0} 356 | m_GameObject: {fileID: 1006784765} 357 | m_Enabled: 1 358 | m_CastShadows: 0 359 | m_ReceiveShadows: 0 360 | m_DynamicOccludee: 1 361 | m_MotionVectors: 1 362 | m_LightProbeUsage: 1 363 | m_ReflectionProbeUsage: 1 364 | m_RenderingLayerMask: 1 365 | m_RendererPriority: 0 366 | m_Materials: 367 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 368 | m_StaticBatchInfo: 369 | firstSubMesh: 0 370 | subMeshCount: 0 371 | m_StaticBatchRoot: {fileID: 0} 372 | m_ProbeAnchor: {fileID: 0} 373 | m_LightProbeVolumeOverride: {fileID: 0} 374 | m_ScaleInLightmap: 1 375 | m_PreserveUVs: 0 376 | m_IgnoreNormalsForChartDetection: 0 377 | m_ImportantGI: 0 378 | m_StitchLightmapSeams: 1 379 | m_SelectedEditorRenderState: 0 380 | m_MinimumChartSize: 4 381 | m_AutoUVMaxDistance: 0.5 382 | m_AutoUVMaxAngle: 89 383 | m_LightmapParameters: {fileID: 0} 384 | m_SortingLayerID: 0 385 | m_SortingLayer: 0 386 | m_SortingOrder: 0 387 | m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} 388 | m_Color: {r: 0, g: 1, b: 0.65882355, a: 1} 389 | m_FlipX: 0 390 | m_FlipY: 0 391 | m_DrawMode: 0 392 | m_Size: {x: 0.2, y: 0.2} 393 | m_AdaptiveModeThreshold: 0.5 394 | m_SpriteTileMode: 0 395 | m_WasSpriteAssigned: 1 396 | m_MaskInteraction: 0 397 | m_SpriteSortPoint: 0 398 | --- !u!4 &1006784768 399 | Transform: 400 | m_ObjectHideFlags: 0 401 | m_CorrespondingSourceObject: {fileID: 0} 402 | m_PrefabInstance: {fileID: 0} 403 | m_PrefabAsset: {fileID: 0} 404 | m_GameObject: {fileID: 1006784765} 405 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 406 | m_LocalPosition: {x: 0, y: 19.5, z: 0} 407 | m_LocalScale: {x: 30, y: 30, z: 1} 408 | m_Children: [] 409 | m_Father: {fileID: 0} 410 | m_RootOrder: 4 411 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 412 | --- !u!114 &1006784769 413 | MonoBehaviour: 414 | m_ObjectHideFlags: 0 415 | m_CorrespondingSourceObject: {fileID: 0} 416 | m_PrefabInstance: {fileID: 0} 417 | m_PrefabAsset: {fileID: 0} 418 | m_GameObject: {fileID: 1006784765} 419 | m_Enabled: 1 420 | m_EditorHideFlags: 0 421 | m_Script: {fileID: 11500000, guid: 52aec09b1737548f1ae1c85e91da2bcb, type: 3} 422 | m_Name: 423 | m_EditorClassIdentifier: 424 | ms: {fileID: 191149644} 425 | ropeStart: {fileID: 1648389610} 426 | lineWidth: 1 427 | --- !u!50 &1006784770 428 | Rigidbody2D: 429 | serializedVersion: 4 430 | m_ObjectHideFlags: 0 431 | m_CorrespondingSourceObject: {fileID: 0} 432 | m_PrefabInstance: {fileID: 0} 433 | m_PrefabAsset: {fileID: 0} 434 | m_GameObject: {fileID: 1006784765} 435 | m_BodyType: 0 436 | m_Simulated: 1 437 | m_UseFullKinematicContacts: 0 438 | m_UseAutoMass: 0 439 | m_Mass: 0.5 440 | m_LinearDrag: 0 441 | m_AngularDrag: 0 442 | m_GravityScale: 0 443 | m_Material: {fileID: 0} 444 | m_Interpolate: 0 445 | m_SleepingMode: 1 446 | m_CollisionDetection: 1 447 | m_Constraints: 0 448 | --- !u!1 &1606609160 449 | GameObject: 450 | m_ObjectHideFlags: 0 451 | m_CorrespondingSourceObject: {fileID: 0} 452 | m_PrefabInstance: {fileID: 0} 453 | m_PrefabAsset: {fileID: 0} 454 | serializedVersion: 6 455 | m_Component: 456 | - component: {fileID: 1606609163} 457 | - component: {fileID: 1606609162} 458 | - component: {fileID: 1606609161} 459 | m_Layer: 0 460 | m_Name: Main Camera 461 | m_TagString: MainCamera 462 | m_Icon: {fileID: 0} 463 | m_NavMeshLayer: 0 464 | m_StaticEditorFlags: 0 465 | m_IsActive: 1 466 | --- !u!81 &1606609161 467 | AudioListener: 468 | m_ObjectHideFlags: 0 469 | m_CorrespondingSourceObject: {fileID: 0} 470 | m_PrefabInstance: {fileID: 0} 471 | m_PrefabAsset: {fileID: 0} 472 | m_GameObject: {fileID: 1606609160} 473 | m_Enabled: 1 474 | --- !u!20 &1606609162 475 | Camera: 476 | m_ObjectHideFlags: 0 477 | m_CorrespondingSourceObject: {fileID: 0} 478 | m_PrefabInstance: {fileID: 0} 479 | m_PrefabAsset: {fileID: 0} 480 | m_GameObject: {fileID: 1606609160} 481 | m_Enabled: 1 482 | serializedVersion: 2 483 | m_ClearFlags: 1 484 | m_BackGroundColor: {r: 0.33495015, g: 0.34777352, b: 0.3679245, a: 0} 485 | m_projectionMatrixMode: 1 486 | m_GateFitMode: 2 487 | m_FOVAxisMode: 0 488 | m_SensorSize: {x: 36, y: 24} 489 | m_LensShift: {x: 0, y: 0} 490 | m_FocalLength: 50 491 | m_NormalizedViewPortRect: 492 | serializedVersion: 2 493 | x: 0 494 | y: 0 495 | width: 1 496 | height: 1 497 | near clip plane: 0.3 498 | far clip plane: 1000 499 | field of view: 60 500 | orthographic: 1 501 | orthographic size: 50 502 | m_Depth: -1 503 | m_CullingMask: 504 | serializedVersion: 2 505 | m_Bits: 4294967295 506 | m_RenderingPath: -1 507 | m_TargetTexture: {fileID: 0} 508 | m_TargetDisplay: 0 509 | m_TargetEye: 3 510 | m_HDR: 1 511 | m_AllowMSAA: 1 512 | m_AllowDynamicResolution: 0 513 | m_ForceIntoRT: 0 514 | m_OcclusionCulling: 1 515 | m_StereoConvergence: 10 516 | m_StereoSeparation: 0.022 517 | --- !u!4 &1606609163 518 | Transform: 519 | m_ObjectHideFlags: 0 520 | m_CorrespondingSourceObject: {fileID: 0} 521 | m_PrefabInstance: {fileID: 0} 522 | m_PrefabAsset: {fileID: 0} 523 | m_GameObject: {fileID: 1606609160} 524 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 525 | m_LocalPosition: {x: 0, y: 0, z: -10} 526 | m_LocalScale: {x: 1, y: 1, z: 1} 527 | m_Children: [] 528 | m_Father: {fileID: 0} 529 | m_RootOrder: 0 530 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 531 | --- !u!1 &1648389608 532 | GameObject: 533 | m_ObjectHideFlags: 0 534 | m_CorrespondingSourceObject: {fileID: 0} 535 | m_PrefabInstance: {fileID: 0} 536 | m_PrefabAsset: {fileID: 0} 537 | serializedVersion: 6 538 | m_Component: 539 | - component: {fileID: 1648389610} 540 | - component: {fileID: 1648389609} 541 | m_Layer: 0 542 | m_Name: ropeStart 543 | m_TagString: Untagged 544 | m_Icon: {fileID: 0} 545 | m_NavMeshLayer: 0 546 | m_StaticEditorFlags: 0 547 | m_IsActive: 1 548 | --- !u!212 &1648389609 549 | SpriteRenderer: 550 | m_ObjectHideFlags: 0 551 | m_CorrespondingSourceObject: {fileID: 0} 552 | m_PrefabInstance: {fileID: 0} 553 | m_PrefabAsset: {fileID: 0} 554 | m_GameObject: {fileID: 1648389608} 555 | m_Enabled: 1 556 | m_CastShadows: 0 557 | m_ReceiveShadows: 0 558 | m_DynamicOccludee: 1 559 | m_MotionVectors: 1 560 | m_LightProbeUsage: 1 561 | m_ReflectionProbeUsage: 1 562 | m_RenderingLayerMask: 1 563 | m_RendererPriority: 0 564 | m_Materials: 565 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 566 | m_StaticBatchInfo: 567 | firstSubMesh: 0 568 | subMeshCount: 0 569 | m_StaticBatchRoot: {fileID: 0} 570 | m_ProbeAnchor: {fileID: 0} 571 | m_LightProbeVolumeOverride: {fileID: 0} 572 | m_ScaleInLightmap: 1 573 | m_PreserveUVs: 0 574 | m_IgnoreNormalsForChartDetection: 0 575 | m_ImportantGI: 0 576 | m_StitchLightmapSeams: 1 577 | m_SelectedEditorRenderState: 0 578 | m_MinimumChartSize: 4 579 | m_AutoUVMaxDistance: 0.5 580 | m_AutoUVMaxAngle: 89 581 | m_LightmapParameters: {fileID: 0} 582 | m_SortingLayerID: 0 583 | m_SortingLayer: 0 584 | m_SortingOrder: 0 585 | m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} 586 | m_Color: {r: 1, g: 0, b: 0, a: 1} 587 | m_FlipX: 0 588 | m_FlipY: 0 589 | m_DrawMode: 0 590 | m_Size: {x: 0.2, y: 0.2} 591 | m_AdaptiveModeThreshold: 0.5 592 | m_SpriteTileMode: 0 593 | m_WasSpriteAssigned: 1 594 | m_MaskInteraction: 0 595 | m_SpriteSortPoint: 0 596 | --- !u!4 &1648389610 597 | Transform: 598 | m_ObjectHideFlags: 0 599 | m_CorrespondingSourceObject: {fileID: 0} 600 | m_PrefabInstance: {fileID: 0} 601 | m_PrefabAsset: {fileID: 0} 602 | m_GameObject: {fileID: 1648389608} 603 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 604 | m_LocalPosition: {x: 20, y: 10, z: 0} 605 | m_LocalScale: {x: 10, y: 10, z: 1} 606 | m_Children: [] 607 | m_Father: {fileID: 0} 608 | m_RootOrder: 3 609 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 610 | --- !u!1 &1939757950 611 | GameObject: 612 | m_ObjectHideFlags: 0 613 | m_CorrespondingSourceObject: {fileID: 0} 614 | m_PrefabInstance: {fileID: 0} 615 | m_PrefabAsset: {fileID: 0} 616 | serializedVersion: 6 617 | m_Component: 618 | - component: {fileID: 1939757953} 619 | - component: {fileID: 1939757952} 620 | - component: {fileID: 1939757951} 621 | m_Layer: 0 622 | m_Name: column (1) 623 | m_TagString: Untagged 624 | m_Icon: {fileID: 0} 625 | m_NavMeshLayer: 0 626 | m_StaticEditorFlags: 0 627 | m_IsActive: 1 628 | --- !u!58 &1939757951 629 | CircleCollider2D: 630 | m_ObjectHideFlags: 0 631 | m_CorrespondingSourceObject: {fileID: 0} 632 | m_PrefabInstance: {fileID: 0} 633 | m_PrefabAsset: {fileID: 0} 634 | m_GameObject: {fileID: 1939757950} 635 | m_Enabled: 1 636 | m_Density: 1 637 | m_Material: {fileID: 0} 638 | m_IsTrigger: 0 639 | m_UsedByEffector: 0 640 | m_UsedByComposite: 0 641 | m_Offset: {x: 0, y: 0} 642 | serializedVersion: 2 643 | m_Radius: 0.1 644 | --- !u!212 &1939757952 645 | SpriteRenderer: 646 | m_ObjectHideFlags: 0 647 | m_CorrespondingSourceObject: {fileID: 0} 648 | m_PrefabInstance: {fileID: 0} 649 | m_PrefabAsset: {fileID: 0} 650 | m_GameObject: {fileID: 1939757950} 651 | m_Enabled: 1 652 | m_CastShadows: 0 653 | m_ReceiveShadows: 0 654 | m_DynamicOccludee: 1 655 | m_MotionVectors: 1 656 | m_LightProbeUsage: 1 657 | m_ReflectionProbeUsage: 1 658 | m_RenderingLayerMask: 1 659 | m_RendererPriority: 0 660 | m_Materials: 661 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 662 | m_StaticBatchInfo: 663 | firstSubMesh: 0 664 | subMeshCount: 0 665 | m_StaticBatchRoot: {fileID: 0} 666 | m_ProbeAnchor: {fileID: 0} 667 | m_LightProbeVolumeOverride: {fileID: 0} 668 | m_ScaleInLightmap: 1 669 | m_PreserveUVs: 0 670 | m_IgnoreNormalsForChartDetection: 0 671 | m_ImportantGI: 0 672 | m_StitchLightmapSeams: 1 673 | m_SelectedEditorRenderState: 0 674 | m_MinimumChartSize: 4 675 | m_AutoUVMaxDistance: 0.5 676 | m_AutoUVMaxAngle: 89 677 | m_LightmapParameters: {fileID: 0} 678 | m_SortingLayerID: 0 679 | m_SortingLayer: 0 680 | m_SortingOrder: 0 681 | m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} 682 | m_Color: {r: 1, g: 1, b: 1, a: 1} 683 | m_FlipX: 0 684 | m_FlipY: 0 685 | m_DrawMode: 0 686 | m_Size: {x: 0.2, y: 0.2} 687 | m_AdaptiveModeThreshold: 0.5 688 | m_SpriteTileMode: 0 689 | m_WasSpriteAssigned: 1 690 | m_MaskInteraction: 0 691 | m_SpriteSortPoint: 0 692 | --- !u!4 &1939757953 693 | Transform: 694 | m_ObjectHideFlags: 0 695 | m_CorrespondingSourceObject: {fileID: 0} 696 | m_PrefabInstance: {fileID: 0} 697 | m_PrefabAsset: {fileID: 0} 698 | m_GameObject: {fileID: 1939757950} 699 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 700 | m_LocalPosition: {x: -6, y: 30, z: 0} 701 | m_LocalScale: {x: 30, y: 30, z: 1} 702 | m_Children: [] 703 | m_Father: {fileID: 0} 704 | m_RootOrder: 5 705 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 706 | --- !u!1 &2034219113 707 | GameObject: 708 | m_ObjectHideFlags: 0 709 | m_CorrespondingSourceObject: {fileID: 0} 710 | m_PrefabInstance: {fileID: 0} 711 | m_PrefabAsset: {fileID: 0} 712 | serializedVersion: 6 713 | m_Component: 714 | - component: {fileID: 2034219116} 715 | - component: {fileID: 2034219115} 716 | - component: {fileID: 2034219114} 717 | m_Layer: 0 718 | m_Name: column 719 | m_TagString: Untagged 720 | m_Icon: {fileID: 0} 721 | m_NavMeshLayer: 0 722 | m_StaticEditorFlags: 0 723 | m_IsActive: 1 724 | --- !u!58 &2034219114 725 | CircleCollider2D: 726 | m_ObjectHideFlags: 0 727 | m_CorrespondingSourceObject: {fileID: 0} 728 | m_PrefabInstance: {fileID: 0} 729 | m_PrefabAsset: {fileID: 0} 730 | m_GameObject: {fileID: 2034219113} 731 | m_Enabled: 1 732 | m_Density: 1 733 | m_Material: {fileID: 0} 734 | m_IsTrigger: 0 735 | m_UsedByEffector: 0 736 | m_UsedByComposite: 0 737 | m_Offset: {x: 0, y: 0} 738 | serializedVersion: 2 739 | m_Radius: 0.1 740 | --- !u!212 &2034219115 741 | SpriteRenderer: 742 | m_ObjectHideFlags: 0 743 | m_CorrespondingSourceObject: {fileID: 0} 744 | m_PrefabInstance: {fileID: 0} 745 | m_PrefabAsset: {fileID: 0} 746 | m_GameObject: {fileID: 2034219113} 747 | m_Enabled: 1 748 | m_CastShadows: 0 749 | m_ReceiveShadows: 0 750 | m_DynamicOccludee: 1 751 | m_MotionVectors: 1 752 | m_LightProbeUsage: 1 753 | m_ReflectionProbeUsage: 1 754 | m_RenderingLayerMask: 1 755 | m_RendererPriority: 0 756 | m_Materials: 757 | - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 758 | m_StaticBatchInfo: 759 | firstSubMesh: 0 760 | subMeshCount: 0 761 | m_StaticBatchRoot: {fileID: 0} 762 | m_ProbeAnchor: {fileID: 0} 763 | m_LightProbeVolumeOverride: {fileID: 0} 764 | m_ScaleInLightmap: 1 765 | m_PreserveUVs: 0 766 | m_IgnoreNormalsForChartDetection: 0 767 | m_ImportantGI: 0 768 | m_StitchLightmapSeams: 1 769 | m_SelectedEditorRenderState: 0 770 | m_MinimumChartSize: 4 771 | m_AutoUVMaxDistance: 0.5 772 | m_AutoUVMaxAngle: 89 773 | m_LightmapParameters: {fileID: 0} 774 | m_SortingLayerID: 0 775 | m_SortingLayer: 0 776 | m_SortingOrder: 0 777 | m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} 778 | m_Color: {r: 1, g: 1, b: 1, a: 1} 779 | m_FlipX: 0 780 | m_FlipY: 0 781 | m_DrawMode: 0 782 | m_Size: {x: 0.2, y: 0.2} 783 | m_AdaptiveModeThreshold: 0.5 784 | m_SpriteTileMode: 0 785 | m_WasSpriteAssigned: 1 786 | m_MaskInteraction: 0 787 | m_SpriteSortPoint: 0 788 | --- !u!4 &2034219116 789 | Transform: 790 | m_ObjectHideFlags: 0 791 | m_CorrespondingSourceObject: {fileID: 0} 792 | m_PrefabInstance: {fileID: 0} 793 | m_PrefabAsset: {fileID: 0} 794 | m_GameObject: {fileID: 2034219113} 795 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 796 | m_LocalPosition: {x: -6, y: 7, z: 0} 797 | m_LocalScale: {x: 30, y: 30, z: 1} 798 | m_Children: [] 799 | m_Father: {fileID: 0} 800 | m_RootOrder: 2 801 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 802 | -------------------------------------------------------------------------------- /Assets/Scenes/Mesh.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3db7bf46b718b401c9aea97afc86c498 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 3 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 2 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ShowResolutionOverlay: 1 98 | m_ExportTrainingData: 0 99 | m_LightingDataAsset: {fileID: 0} 100 | m_UseShadowmask: 1 101 | --- !u!196 &4 102 | NavMeshSettings: 103 | serializedVersion: 2 104 | m_ObjectHideFlags: 0 105 | m_BuildSettings: 106 | serializedVersion: 2 107 | agentTypeID: 0 108 | agentRadius: 0.5 109 | agentHeight: 2 110 | agentSlope: 45 111 | agentClimb: 0.4 112 | ledgeDropHeight: 0 113 | maxJumpAcrossDistance: 0 114 | minRegionArea: 2 115 | manualCellSize: 0 116 | cellSize: 0.16666667 117 | manualTileSize: 0 118 | tileSize: 256 119 | accuratePlacement: 0 120 | debug: 121 | m_Flags: 0 122 | m_NavMeshData: {fileID: 0} 123 | --- !u!1 &519420028 124 | GameObject: 125 | m_ObjectHideFlags: 0 126 | m_CorrespondingSourceObject: {fileID: 0} 127 | m_PrefabInstance: {fileID: 0} 128 | m_PrefabAsset: {fileID: 0} 129 | serializedVersion: 6 130 | m_Component: 131 | - component: {fileID: 519420032} 132 | - component: {fileID: 519420031} 133 | - component: {fileID: 519420029} 134 | m_Layer: 0 135 | m_Name: Main Camera 136 | m_TagString: MainCamera 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!81 &519420029 142 | AudioListener: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 519420028} 148 | m_Enabled: 1 149 | --- !u!20 &519420031 150 | Camera: 151 | m_ObjectHideFlags: 0 152 | m_CorrespondingSourceObject: {fileID: 0} 153 | m_PrefabInstance: {fileID: 0} 154 | m_PrefabAsset: {fileID: 0} 155 | m_GameObject: {fileID: 519420028} 156 | m_Enabled: 1 157 | serializedVersion: 2 158 | m_ClearFlags: 2 159 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 160 | m_projectionMatrixMode: 1 161 | m_GateFitMode: 2 162 | m_FOVAxisMode: 0 163 | m_SensorSize: {x: 36, y: 24} 164 | m_LensShift: {x: 0, y: 0} 165 | m_FocalLength: 50 166 | m_NormalizedViewPortRect: 167 | serializedVersion: 2 168 | x: 0 169 | y: 0 170 | width: 1 171 | height: 1 172 | near clip plane: 0.3 173 | far clip plane: 1000 174 | field of view: 60 175 | orthographic: 1 176 | orthographic size: 10 177 | m_Depth: -1 178 | m_CullingMask: 179 | serializedVersion: 2 180 | m_Bits: 4294967295 181 | m_RenderingPath: -1 182 | m_TargetTexture: {fileID: 0} 183 | m_TargetDisplay: 0 184 | m_TargetEye: 0 185 | m_HDR: 1 186 | m_AllowMSAA: 0 187 | m_AllowDynamicResolution: 0 188 | m_ForceIntoRT: 0 189 | m_OcclusionCulling: 0 190 | m_StereoConvergence: 10 191 | m_StereoSeparation: 0.022 192 | --- !u!4 &519420032 193 | Transform: 194 | m_ObjectHideFlags: 0 195 | m_CorrespondingSourceObject: {fileID: 0} 196 | m_PrefabInstance: {fileID: 0} 197 | m_PrefabAsset: {fileID: 0} 198 | m_GameObject: {fileID: 519420028} 199 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 200 | m_LocalPosition: {x: 0, y: 0, z: -10} 201 | m_LocalScale: {x: 1, y: 1, z: 1} 202 | m_Children: [] 203 | m_Father: {fileID: 0} 204 | m_RootOrder: 0 205 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 206 | --- !u!1 &713891209 207 | GameObject: 208 | m_ObjectHideFlags: 0 209 | m_CorrespondingSourceObject: {fileID: 0} 210 | m_PrefabInstance: {fileID: 0} 211 | m_PrefabAsset: {fileID: 0} 212 | serializedVersion: 6 213 | m_Component: 214 | - component: {fileID: 713891211} 215 | - component: {fileID: 713891210} 216 | m_Layer: 0 217 | m_Name: ropeBody (1) 218 | m_TagString: Untagged 219 | m_Icon: {fileID: 0} 220 | m_NavMeshLayer: 0 221 | m_StaticEditorFlags: 0 222 | m_IsActive: 1 223 | --- !u!212 &713891210 224 | SpriteRenderer: 225 | m_ObjectHideFlags: 0 226 | m_CorrespondingSourceObject: {fileID: 0} 227 | m_PrefabInstance: {fileID: 0} 228 | m_PrefabAsset: {fileID: 0} 229 | m_GameObject: {fileID: 713891209} 230 | m_Enabled: 1 231 | m_CastShadows: 0 232 | m_ReceiveShadows: 0 233 | m_DynamicOccludee: 1 234 | m_MotionVectors: 1 235 | m_LightProbeUsage: 1 236 | m_ReflectionProbeUsage: 1 237 | m_RenderingLayerMask: 1 238 | m_RendererPriority: 0 239 | m_Materials: 240 | - {fileID: 2100000, guid: 65d2f5139ebf045fa93479472dfb4113, type: 2} 241 | m_StaticBatchInfo: 242 | firstSubMesh: 0 243 | subMeshCount: 0 244 | m_StaticBatchRoot: {fileID: 0} 245 | m_ProbeAnchor: {fileID: 0} 246 | m_LightProbeVolumeOverride: {fileID: 0} 247 | m_ScaleInLightmap: 1 248 | m_PreserveUVs: 0 249 | m_IgnoreNormalsForChartDetection: 0 250 | m_ImportantGI: 0 251 | m_StitchLightmapSeams: 1 252 | m_SelectedEditorRenderState: 0 253 | m_MinimumChartSize: 4 254 | m_AutoUVMaxDistance: 0.5 255 | m_AutoUVMaxAngle: 89 256 | m_LightmapParameters: {fileID: 0} 257 | m_SortingLayerID: 0 258 | m_SortingLayer: 0 259 | m_SortingOrder: 1 260 | m_Sprite: {fileID: 21300000, guid: bc7c8c853763846b18331417ee3b761d, type: 3} 261 | m_Color: {r: 1, g: 1, b: 1, a: 1} 262 | m_FlipX: 0 263 | m_FlipY: 0 264 | m_DrawMode: 0 265 | m_Size: {x: 8, y: 1.74} 266 | m_AdaptiveModeThreshold: 0.61 267 | m_SpriteTileMode: 1 268 | m_WasSpriteAssigned: 1 269 | m_MaskInteraction: 0 270 | m_SpriteSortPoint: 0 271 | --- !u!4 &713891211 272 | Transform: 273 | m_ObjectHideFlags: 0 274 | m_CorrespondingSourceObject: {fileID: 0} 275 | m_PrefabInstance: {fileID: 0} 276 | m_PrefabAsset: {fileID: 0} 277 | m_GameObject: {fileID: 713891209} 278 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 279 | m_LocalPosition: {x: 11.35, y: -5.16, z: 0} 280 | m_LocalScale: {x: 2, y: 1.1494253, z: 1} 281 | m_Children: [] 282 | m_Father: {fileID: 0} 283 | m_RootOrder: 3 284 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 285 | --- !u!1 &1861562154 286 | GameObject: 287 | m_ObjectHideFlags: 0 288 | m_CorrespondingSourceObject: {fileID: 0} 289 | m_PrefabInstance: {fileID: 0} 290 | m_PrefabAsset: {fileID: 0} 291 | serializedVersion: 6 292 | m_Component: 293 | - component: {fileID: 1861562156} 294 | - component: {fileID: 1861562155} 295 | m_Layer: 0 296 | m_Name: ropeBody 297 | m_TagString: Untagged 298 | m_Icon: {fileID: 0} 299 | m_NavMeshLayer: 0 300 | m_StaticEditorFlags: 0 301 | m_IsActive: 1 302 | --- !u!212 &1861562155 303 | SpriteRenderer: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | m_GameObject: {fileID: 1861562154} 309 | m_Enabled: 1 310 | m_CastShadows: 0 311 | m_ReceiveShadows: 0 312 | m_DynamicOccludee: 1 313 | m_MotionVectors: 1 314 | m_LightProbeUsage: 1 315 | m_ReflectionProbeUsage: 1 316 | m_RenderingLayerMask: 1 317 | m_RendererPriority: 0 318 | m_Materials: 319 | - {fileID: 2100000, guid: 65d2f5139ebf045fa93479472dfb4113, type: 2} 320 | m_StaticBatchInfo: 321 | firstSubMesh: 0 322 | subMeshCount: 0 323 | m_StaticBatchRoot: {fileID: 0} 324 | m_ProbeAnchor: {fileID: 0} 325 | m_LightProbeVolumeOverride: {fileID: 0} 326 | m_ScaleInLightmap: 1 327 | m_PreserveUVs: 0 328 | m_IgnoreNormalsForChartDetection: 0 329 | m_ImportantGI: 0 330 | m_StitchLightmapSeams: 1 331 | m_SelectedEditorRenderState: 0 332 | m_MinimumChartSize: 4 333 | m_AutoUVMaxDistance: 0.5 334 | m_AutoUVMaxAngle: 89 335 | m_LightmapParameters: {fileID: 0} 336 | m_SortingLayerID: 0 337 | m_SortingLayer: 0 338 | m_SortingOrder: 1 339 | m_Sprite: {fileID: 21300000, guid: bc7c8c853763846b18331417ee3b761d, type: 3} 340 | m_Color: {r: 1, g: 1, b: 1, a: 1} 341 | m_FlipX: 0 342 | m_FlipY: 0 343 | m_DrawMode: 0 344 | m_Size: {x: 8, y: 1.74} 345 | m_AdaptiveModeThreshold: 0.61 346 | m_SpriteTileMode: 1 347 | m_WasSpriteAssigned: 1 348 | m_MaskInteraction: 0 349 | m_SpriteSortPoint: 0 350 | --- !u!4 &1861562156 351 | Transform: 352 | m_ObjectHideFlags: 0 353 | m_CorrespondingSourceObject: {fileID: 0} 354 | m_PrefabInstance: {fileID: 0} 355 | m_PrefabAsset: {fileID: 0} 356 | m_GameObject: {fileID: 1861562154} 357 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 358 | m_LocalPosition: {x: 3.09, y: 1.21, z: 0} 359 | m_LocalScale: {x: 1, y: 1.1494253, z: 1} 360 | m_Children: [] 361 | m_Father: {fileID: 0} 362 | m_RootOrder: 1 363 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 364 | --- !u!1 &2119045435 365 | GameObject: 366 | m_ObjectHideFlags: 0 367 | m_CorrespondingSourceObject: {fileID: 0} 368 | m_PrefabInstance: {fileID: 0} 369 | m_PrefabAsset: {fileID: 0} 370 | serializedVersion: 6 371 | m_Component: 372 | - component: {fileID: 2119045437} 373 | - component: {fileID: 2119045436} 374 | m_Layer: 0 375 | m_Name: ropeCircle 376 | m_TagString: Untagged 377 | m_Icon: {fileID: 0} 378 | m_NavMeshLayer: 0 379 | m_StaticEditorFlags: 0 380 | m_IsActive: 1 381 | --- !u!212 &2119045436 382 | SpriteRenderer: 383 | m_ObjectHideFlags: 0 384 | m_CorrespondingSourceObject: {fileID: 0} 385 | m_PrefabInstance: {fileID: 0} 386 | m_PrefabAsset: {fileID: 0} 387 | m_GameObject: {fileID: 2119045435} 388 | m_Enabled: 1 389 | m_CastShadows: 0 390 | m_ReceiveShadows: 0 391 | m_DynamicOccludee: 1 392 | m_MotionVectors: 1 393 | m_LightProbeUsage: 1 394 | m_ReflectionProbeUsage: 1 395 | m_RenderingLayerMask: 1 396 | m_RendererPriority: 0 397 | m_Materials: 398 | - {fileID: 2100000, guid: f670abfa09a2d4bfcac799c4699d7c6e, type: 2} 399 | m_StaticBatchInfo: 400 | firstSubMesh: 0 401 | subMeshCount: 0 402 | m_StaticBatchRoot: {fileID: 0} 403 | m_ProbeAnchor: {fileID: 0} 404 | m_LightProbeVolumeOverride: {fileID: 0} 405 | m_ScaleInLightmap: 1 406 | m_PreserveUVs: 0 407 | m_IgnoreNormalsForChartDetection: 0 408 | m_ImportantGI: 0 409 | m_StitchLightmapSeams: 1 410 | m_SelectedEditorRenderState: 0 411 | m_MinimumChartSize: 4 412 | m_AutoUVMaxDistance: 0.5 413 | m_AutoUVMaxAngle: 89 414 | m_LightmapParameters: {fileID: 0} 415 | m_SortingLayerID: 0 416 | m_SortingLayer: 0 417 | m_SortingOrder: 0 418 | m_Sprite: {fileID: 21300000, guid: bc7c8c853763846b18331417ee3b761d, type: 3} 419 | m_Color: {r: 1, g: 1, b: 1, a: 1} 420 | m_FlipX: 0 421 | m_FlipY: 0 422 | m_DrawMode: 0 423 | m_Size: {x: 0.16, y: 0.16} 424 | m_AdaptiveModeThreshold: 0.5 425 | m_SpriteTileMode: 0 426 | m_WasSpriteAssigned: 1 427 | m_MaskInteraction: 0 428 | m_SpriteSortPoint: 0 429 | --- !u!4 &2119045437 430 | Transform: 431 | m_ObjectHideFlags: 0 432 | m_CorrespondingSourceObject: {fileID: 0} 433 | m_PrefabInstance: {fileID: 0} 434 | m_PrefabAsset: {fileID: 0} 435 | m_GameObject: {fileID: 2119045435} 436 | m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} 437 | m_LocalPosition: {x: -4.27, y: -2.88, z: 0} 438 | m_LocalScale: {x: 1, y: 4.597701, z: 1} 439 | m_Children: [] 440 | m_Father: {fileID: 0} 441 | m_RootOrder: 2 442 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} 443 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cda990e2423bbf4892e6590ba056729 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/circle.shader: -------------------------------------------------------------------------------- 1 | Shader "circle" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | _AngleStart("angleStart",range(0,360))=0 7 | _AngleEnd("angleEnd",range(0,360))=360 8 | _Distance("Distance",Float) = 5 9 | _Width("Width",Float) = 3 10 | } 11 | SubShader 12 | { 13 | // No culling or depth 14 | Cull Off ZWrite Off ZTest Always 15 | 16 | Pass 17 | { 18 | CGPROGRAM 19 | #pragma vertex vert 20 | #pragma fragment frag 21 | 22 | #include "UnityCG.cginc" 23 | 24 | struct appdata 25 | { 26 | float4 vertex : POSITION; 27 | float2 uv : TEXCOORD0; 28 | }; 29 | 30 | struct v2f 31 | { 32 | float2 uv : TEXCOORD0; 33 | float4 vertex : SV_POSITION; 34 | float4 worldPosition : TEXCOORD1; 35 | }; 36 | 37 | v2f vert (appdata v) 38 | { 39 | v2f o; 40 | o.vertex = UnityObjectToClipPos(v.vertex); 41 | o.uv = v.uv; 42 | return o; 43 | } 44 | 45 | sampler2D _MainTex; 46 | float _LineLength; 47 | float _AngleStart; 48 | float _AngleEnd; 49 | float _Distance; 50 | float _Width; 51 | fixed4 frag (v2f i) : SV_Target 52 | { 53 | float2 myuv=( i.uv + float2(-0.5,-0.5)); 54 | float R = length(myuv); 55 | float A = atan2(myuv.y,myuv.x); 56 | if(A<0){ 57 | A+=2*3.1415926; 58 | } 59 | float2 polar = float2(R,A); 60 | //定义圆环们的区域 61 | if(R>0.5||R<0.25)return fixed4(1,1,1,1); 62 | if(_AngleEnd!=_AngleStart){ 63 | 64 | if(A>_AngleStart/180*3.1415926&&A<_AngleEnd/180*3.1415926){ 65 | fixed4 col = tex2D(_MainTex,float2( -polar.y/3.1415926,polar.x*4)); 66 | return col; 67 | } 68 | 69 | } 70 | return fixed4(1,1,1,1); 71 | } 72 | ENDCG 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Assets/Scenes/circle.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65096c0f37e6544dfa9557be83f1c998 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scenes/meshScript.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class meshScript : MonoBehaviour 6 | { 7 | private MeshFilter filter; 8 | private Mesh mesh; 9 | private Vector3 startPos=new Vector3(0,0,0); 10 | public List meshVert; 11 | public List meshTriangles;//三角形 12 | public List meshUV; 13 | float offset=0;//保存上一段结尾的x偏移量,附加给这一段 14 | public float Width=1; 15 | private bool needStart=true;//需要添加4个点。在初始或者 moveTo时 16 | [SerializeField] 17 | private int pointNum=0;//顶点总数。按照 sr,sl,er,el添加 18 | void Start() 19 | { 20 | filter=GetComponent(); 21 | mesh = new Mesh(); 22 | filter.mesh=mesh; 23 | meshVert=new List{}; 24 | meshTriangles=new List{}; 25 | meshUV=new List{}; 26 | 27 | } 28 | public void stroke() 29 | { 30 | mesh.name = "MyMesh"; 31 | mesh.Clear(); 32 | // 为网格创建顶点数组 33 | Vector3[] vertices = meshVert.ToArray(); 34 | 35 | 36 | 37 | // 通过顶点为网格创建三角形 38 | int[] triangles = meshTriangles.ToArray(); 39 | 40 | 41 | // 为mesh设置纹理贴图坐标 42 | Vector2[] uv = meshUV.ToArray(); 43 | mesh.vertices = vertices; 44 | mesh.triangles = triangles; 45 | mesh.uv = uv; 46 | //Debug.LogError(vertices.Length+"\tverticesLength:"+mesh.vertices.Length); 47 | // Debug.Log("") 48 | } 49 | // Update is called once per frame 50 | public void lineTo(Vector3 endPos){ 51 | Vector3 sToEnd=endPos-startPos; 52 | float length=Vector3.Distance(startPos,endPos); 53 | Vector3 left=new Vector3(-sToEnd.y,sToEnd.x); 54 | Vector3 Right=new Vector3(sToEnd.y,-sToEnd.x); 55 | left=left.normalized*Width/2; 56 | Right=Right.normalized*Width/2; 57 | //初始添加4个点,后可只添加两个点 58 | if(true){ 59 | meshVert.Add(startPos+Right); 60 | meshVert.Add(startPos+left); 61 | pointNum+=2; 62 | //添加UV 63 | meshUV.Add(new Vector2(offset,0)); 64 | meshUV.Add(new Vector2(offset,1)); 65 | 66 | } 67 | meshVert.Add(endPos+Right); 68 | meshVert.Add(endPos+left); 69 | meshUV.Add(new Vector2(offset+length/5,0)); 70 | meshUV.Add(new Vector2(offset+length/5,1)); 71 | offset=((offset*5+length)%5)/5.0f; 72 | //Debug.Log("!!!offset"+offset); 73 | pointNum+=2; 74 | meshTriangles.Add(pointNum-1); 75 | meshTriangles.Add(pointNum-2); 76 | meshTriangles.Add(pointNum-4); 77 | meshTriangles.Add(pointNum-1); 78 | meshTriangles.Add(pointNum-4); 79 | meshTriangles.Add(pointNum-3); 80 | startPos=endPos; 81 | needStart=false; 82 | } 83 | /// 84 | /// 添加弧线路径 85 | /// 86 | /// 圆心位置 87 | /// 弧线中点到圆心距离 88 | /// 起始角,以弧度计。(弧的圆形的三点钟位置是 0 度)。 89 | /// 结束角,以弧度计。三点钟为2pi 90 | /// 可选。规定应该逆时针还是顺时针绘图,默认false逆指针。False = 逆时针,true = 顺时针 91 | public void circle(Vector3 circlePoint,float radius,float startRad,float endRad,bool clockwise=false){ 92 | float cirLength=0; 93 | float temOffset=offset; 94 | if(clockwise){//顺时针 95 | if(endRad>startRad){ 96 | cirLength=(startRad+2*Mathf.PI-endRad)*radius; 97 | } 98 | else{ 99 | cirLength=(startRad-endRad)*radius; 100 | } 101 | } 102 | else{//逆时针 103 | if(endRad>startRad){ 104 | cirLength=(endRad-startRad)*radius; 105 | } 106 | else{ 107 | 108 | cirLength=(endRad+2*Mathf.PI-startRad)*radius; 109 | Debug.LogError("cirLength:"+cirLength); 110 | } 111 | } 112 | float rad=startRad; 113 | Vector3 temPoint=new Vector3(Mathf.Cos(rad),Mathf.Sin(rad),0);//临时的点 114 | 115 | 116 | if(clockwise) 117 | { 118 | meshVert.Add(temPoint*(radius-Width/2)+circlePoint); 119 | meshVert.Add(temPoint*(radius+Width/2)+circlePoint); 120 | }else{ 121 | meshVert.Add(temPoint*(radius+Width/2)+circlePoint); 122 | meshVert.Add(temPoint*(radius-Width/2)+circlePoint); 123 | } 124 | meshUV.Add(new Vector2(offset,0)); 125 | meshUV.Add(new Vector2(offset,1)); 126 | pointNum+=2; 127 | 128 | for(int i=0;icolumns=new List{}; 31 | Vector3 mouseWorldPos=new Vector3(0,0,0); 32 | Vector3 newTangentP=new Vector3(0,1,0); 33 | void Start() 34 | { 35 | flag=false; 36 | 37 | this.columns.Add(new myColumn(this.ropeStart.gameObject,ropeStart.position)); 38 | } 39 | private void OnMouseDown() { 40 | //Debug.Log(Camera.main.ScreenToWorldPoint(Input.mousePosition)); 41 | flag=true; 42 | 43 | mouseWorldPos=Camera.main.ScreenToWorldPoint(Input.mousePosition)+new Vector3(0,10,0); 44 | } 45 | private void OnMouseDrag() { 46 | mouseWorldPos=Camera.main.ScreenToWorldPoint(Input.mousePosition)+new Vector3(0,10,0); 47 | } 48 | private void OnMouseUp() { 49 | flag=false; 50 | } 51 | // Update is called once per frame 52 | void Update() 53 | { 54 | for(var i=0;i().velocity=(this.mouseWorldPos-transform.position)*10; 60 | } 61 | else{ 62 | if(Vector3.Distance(transform.position,this.columns[this.columns.Count-1].preTangentWorldPos)<1){ 63 | this.GetComponent().velocity=(this.columns[this.columns.Count-1].preTangentWorldPos-transform.position)*10; 64 | } 65 | else{ 66 | this.GetComponent().velocity=(this.columns[this.columns.Count-1].preTangentWorldPos-transform.position).normalized*100; 67 | } 68 | } 69 | RaycastHit2D[] results; 70 | if(this.columns.Count>1){ 71 | 72 | //获取上一个柱子切点 73 | //var p=CalcQieDian(this.columns[this.columns.Count-1].columnWorldPos,this.transform.position,this.columns[this.columns.Count-1].column.transform.localScale.x/10,this.columns[this.columns.Count-1].preTangentWorldPos); 74 | //this.columns[this.columns.Count-1].preTangentWorldPos=p; 75 | //Debug.DrawLine(transform.position, this.columns[this.columns.Count-1].preTangentWorldPos, Color.red, Vector3.Distance(transform.position,this.columns[this.columns.Count-1].preTangentWorldPos)); 76 | results = Physics2D.RaycastAll(transform.position, this.columns[this.columns.Count-1].preTangentWorldPos-transform.position,Vector3.Distance(transform.position,this.columns[this.columns.Count-1].preTangentWorldPos)); 77 | //var results=cc.director.getPhysicsManager().rayCast(transform.position,this.columns[this.columns.Count-1].preTangentWorldPos,cc.RayCastType.Closest); 78 | } 79 | else{ 80 | //Debug.DrawLine(transform.position, this.columns[this.columns.Count-1].startWorldPos, Color.red, Vector3.Distance(transform.position,this.columns[this.columns.Count-1].startWorldPos)); 81 | results = Physics2D.RaycastAll(transform.position, this.columns[this.columns.Count-1].startWorldPos-transform.position,Vector3.Distance(transform.position,this.columns[this.columns.Count-1].startWorldPos)); 82 | //grounded = Physics.Raycast(transform.position, this.columns[this.columns.Count-1].startWorldPos); 83 | //var results = cc.director.getPhysicsManager().rayCast(transform.position,this.columns[this.columns.Count-1].startWorldPos,cc.RayCastType.Closest); 84 | } 85 | for(var i=0;i1){ 91 | 92 | 93 | //this.c0=results[0].collider.node.name; 94 | var col = results[1].collider.gameObject; 95 | if(col!=this.columns[this.columns.Count-1].column){ 96 | //Debug.Log("radius:"+col.transform.localScale.x/10); 97 | //Debug.Log("point"+results[1].point); 98 | var sp=this.CalcQieDian(col.transform.position,this.transform.position,col.transform.localScale.x/10,results[1].point); 99 | Debug.Log("sp:"+sp); 100 | var nc=new myColumn(col,sp); 101 | this.columns.Add(nc); 102 | //nc.column.GetComponent('columnScr').onLight(); 103 | } 104 | else{ 105 | //再次碰到原来的column 106 | this.newTangentP=this.CalcQieDian(this.columns[this.columns.Count-1].columnWorldPos,transform.position,this.columns[this.columns.Count-1].column.transform.localScale.x/10,this.columns[this.columns.Count-1].preTangentWorldPos); 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | if(this.columns[this.columns.Count-1].rad*(this.columns[this.columns.Count-1].rad+this.radTwoPOnR(this.columns[this.columns.Count-1].preTangentWorldPos,this.newTangentP,this.columns[this.columns.Count-1].columnWorldPos))<0){ 115 | //console.log("!!!!!pop"); 116 | var c=this.columns[this.columns.Count-1]; 117 | this.columns.Remove(this.columns[this.columns.Count-1]); 118 | if(this.ifOnlyColumn(c.column)==0){ 119 | //只有一份c.column 120 | //c.column. GetComponent('columnScr').cancelLight(); 121 | } 122 | } 123 | else{ 124 | this.columns[this.columns.Count-1].rad+=this.radTwoPOnR(this.columns[this.columns.Count-1].preTangentWorldPos,this.newTangentP,this.columns[this.columns.Count-1].columnWorldPos); 125 | this.columns[this.columns.Count-1].preTangentWorldPos=this.newTangentP; 126 | } 127 | } 128 | 129 | 130 | } 131 | else{ 132 | if(this.columns.Count>1){ 133 | 134 | this.newTangentP=this.CalcQieDian(this.columns[this.columns.Count-1].columnWorldPos,transform.position,this.columns[this.columns.Count-1].column.transform.localScale.x/10,this.columns[this.columns.Count-1].preTangentWorldPos); 135 | if(this.columns[this.columns.Count-1].rad*(this.columns[this.columns.Count-1].rad+this.radTwoPOnR(this.columns[this.columns.Count-1].preTangentWorldPos,this.newTangentP,this.columns[this.columns.Count-1].columnWorldPos))<0){ 136 | //console.log("!!!!!pop"); 137 | var c=this.columns[this.columns.Count-1]; 138 | this.columns.Remove(this.columns[this.columns.Count-1]); 139 | if(this.ifOnlyColumn(c.column)==0){ 140 | //只有一份c.column 141 | //c.column. getComponent('columnScr').cancelLight(); 142 | } 143 | } 144 | else{ 145 | 146 | this.columns[this.columns.Count-1].rad+=this.radTwoPOnR(this.columns[this.columns.Count-1].preTangentWorldPos,this.newTangentP,this.columns[this.columns.Count-1].columnWorldPos); 147 | this.columns[this.columns.Count-1].preTangentWorldPos=this.newTangentP; 148 | } 149 | } 150 | } 151 | if(this.columns.Count>1){ 152 | /*for(var i=1;i0){ 163 | //console.log("!!!!!pop dot"); 164 | var c=this.columns[this.columns.Count-1]; 165 | this.columns.Remove(this.columns[this.columns.Count-1]); 166 | if(this.ifOnlyColumn(c.column)==0){ 167 | //只有一份c.column 168 | //c.column. getComponent('columnScr').cancelLight(); 169 | } 170 | } 171 | } 172 | } 173 | this.ms.Width=this.lineWidth; 174 | 175 | 176 | this.ms.moveTo(transform.position); 177 | for(int i=this.columns.Count-1;i>0;i--){ 178 | 179 | 180 | 181 | 182 | var nor=(this.columns[i].preTangentWorldPos-this.columns[i].columnWorldPos).normalized; 183 | var po=this.columns[i].preTangentWorldPos+(nor*(this.lineWidth/2)); 184 | this.ms.lineTo(new Vector2(po.x,po.y)); 185 | 186 | 187 | //对第i个柱子画弧 188 | if(Mathf.Abs( this.columns[i].rad)>=Math.PI*2){ 189 | if(this.columns[i].rad>0){ 190 | //顺时针绕上柱子,但线要逆时针从结点向起始点画 191 | this.ms.circle(this.columns[i].columnWorldPos,this.columns[i].column.transform.localScale.x/10+ this.lineWidth/2,0,Mathf.PI*2,false); 192 | } 193 | else{ 194 | this.ms.circle(this.columns[i].columnWorldPos,this.columns[i].column.transform.localScale.x/10+ this.lineWidth/2,Mathf.PI*2,0,true); 195 | } 196 | 197 | this.ms.moveTo(this.columns[i].startWorldPos); 198 | } 199 | else if(Mathf.Abs( this.columns[i].rad)!=0){ 200 | var strad=this.radOnePointOnCircle(this.columns[i].preTangentWorldPos,this.columns[i].columnWorldPos); 201 | this.ms.circle(this.columns[i].columnWorldPos,this.columns[i].column.transform.localScale.x/10+ this.lineWidth/2,strad,strad+this.columns[i].rad,this.columns[i].rad<0); 202 | } 203 | var norSt=(this.columns[i].startWorldPos-(this.columns[i].columnWorldPos)).normalized; 204 | var poSt=this.columns[i].startWorldPos+(norSt*(this.lineWidth/2)); 205 | this.ms.moveTo(poSt); 206 | } 207 | this.ms.lineTo(ropeStart.position); 208 | 209 | //this.ms.fillColor = cc.Color.YELLOW; 210 | //var q=this.CalcQieDian(this.ci.parent.convertToWorldSpaceAR(this.ci.position),transform.position,20); 211 | //this.ms.circle(this.node.convertToNodeSpaceAR(q).x,this.node.convertToNodeSpaceAR(q).y,5); 212 | this.ms.stroke(); 213 | } 214 | float radOnePointOnCircle(Vector2 p,Vector2 pR){ 215 | var ra=0.0f; 216 | var va=p-(pR); 217 | var vb=new Vector2(1,0); 218 | ra=Vector2.SignedAngle(vb,va)/180*Mathf.PI; 219 | 220 | return ra; 221 | } 222 | public Vector2 CalcQieDian(Vector2 ptCenter,Vector2 ptOutside,float dbRadious,Vector2 alignP) 223 | { 224 | 225 | var E=new Vector2(0,0); 226 | var F=new Vector2(0,0); 227 | var G=new Vector2(0,0); 228 | var H=new Vector2(0,0); 229 | var r=dbRadious; 230 | //1. 坐标平移到圆心ptCenter处,求园外点的新坐标E 231 | E=ptOutside-ptCenter;//平移变换到E 232 | //2. 求园与OE的交点坐标F, 相当于E的缩放变换 233 | var t= r /E.magnitude; //得到缩放比例 234 | F= E*t; //缩放变换到F 235 | var a=0.0f; 236 | //3. 将E旋转变换角度a到切点G,其中cos(a)=r/OF=t, 所以a=arccos(t); 237 | if(this.radTwoPOnR(ptOutside,alignP,ptCenter)<0){ 238 | a= -Mathf.Acos(t); //得到旋转角度 角度为负 239 | }else{ 240 | a= Mathf.Acos(t); //得到旋转角度 角度为正 241 | } 242 | 243 | G=rotateVec2(F,a);//旋转变换到G 244 | 245 | //4. 将G平移到原来的坐标下得到新坐标H 246 | H=G+(ptCenter); //平移变换到H 247 | 248 | //5. 返回H 249 | return H; 250 | //6. 实际应用过程中,只要一个中间变量E,其他F,G,H可以不用。 251 | } 252 | float ifOnlyColumn(GameObject c){ 253 | float _out=0.0f; 254 | for(var i=1;i