Skip to content

Commit c827c0d

Browse files
committed
sample: Made a better example for ladders in GridVania
1 parent 008c7a6 commit c827c0d

File tree

6 files changed

+332
-6
lines changed

6 files changed

+332
-6
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using LDtkUnity;
2+
using UnityEngine;
3+
4+
namespace Samples
5+
{
6+
/// <summary>
7+
/// This example demonstrates how resizing an LDtk entity can dynamically adjust the size of an object.
8+
/// </summary>
9+
public class ExampleImportedLadder : MonoBehaviour, ILDtkImportedEntity
10+
{
11+
[SerializeField] private SpriteRenderer _renderer = null;
12+
[SerializeField] private BoxCollider2D _collider = null;
13+
14+
public void OnLDtkImportEntity(EntityInstance entityInstance)
15+
{
16+
if (_renderer == null)
17+
{
18+
Debug.LogWarning($"LDtk Sample: An entity's referenced renderer component was null. This can happen when importing the examples for the first time. Try reimporting again to fix the samples.\n{name}", gameObject);
19+
return;
20+
}
21+
if (_collider == null)
22+
{
23+
Debug.LogWarning($"LDtk Sample: An entity's referenced collider component was null. This can happen when importing the examples for the first time. Try reimporting again to fix the samples.\n{name}", gameObject);
24+
return;
25+
}
26+
27+
//The importer will normally scale the GameObject based on how much it was resized in LDtk.
28+
//But we don't want that in this instance, so set the scale back to one.
29+
transform.localScale = Vector3.one;
30+
31+
//The resize factor is the entity instance size divided by the entity definition size.
32+
//Alternatively if the base prefab was never scaled, the y scale of the entity GameObject can be used too.
33+
float yScale = entityInstance.Height / (float)entityInstance.Definition.Height;
34+
35+
_renderer.size = new Vector2(_renderer.size.x, yScale);
36+
_collider.size = new Vector2(_collider.size.x, yScale);
37+
38+
//Because the entity's pivot is in the top left, the sprite's pivot was configured accordingly to have the corresponding pivot.
39+
//However, it's not possible to configure a pivot for a BoxCollider2D, so the colliders offset needs to be manually determined.
40+
_collider.offset = new Vector2(_collider.offset.x, -yScale * 0.5f);
41+
}
42+
43+
public int GetPostprocessOrder()
44+
{
45+
return -1;
46+
}
47+
}
48+
}

Assets/LDtkUnity/Samples~/Common/Scripts/ExampleImportedLadder.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
208 Bytes
Loading

Assets/LDtkUnity/Samples~/Common/Sprites/Ladder.png.meta

Lines changed: 143 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/LDtkUnity/Samples~/Samples/WorldMap_GridVania_layout/GridVania_Ladder.prefab

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Transform:
2626
m_GameObject: {fileID: 392067290705676212}
2727
serializedVersion: 2
2828
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29-
m_LocalPosition: {x: 0.5, y: -0.5, z: 0}
29+
m_LocalPosition: {x: 0, y: 0, z: 0}
3030
m_LocalScale: {x: 1, y: 1, z: 1}
3131
m_ConstrainProportionsScale: 0
3232
m_Children: []
@@ -76,11 +76,11 @@ SpriteRenderer:
7676
m_SortingLayerID: 0
7777
m_SortingLayer: 0
7878
m_SortingOrder: 0
79-
m_Sprite: {fileID: 21300000, guid: a0ec3126b00c562449ef4e99a4da11fc, type: 3}
79+
m_Sprite: {fileID: 21300000, guid: e53a6a46125489046aa60333dd75bf44, type: 3}
8080
m_Color: {r: 1, g: 1, b: 1, a: 1}
8181
m_FlipX: 0
8282
m_FlipY: 0
83-
m_DrawMode: 0
83+
m_DrawMode: 2
8484
m_Size: {x: 1, y: 1}
8585
m_AdaptiveModeThreshold: 0.5
8686
m_SpriteTileMode: 0
@@ -97,6 +97,8 @@ GameObject:
9797
m_Component:
9898
- component: {fileID: 5922710633718950015}
9999
- component: {fileID: 2594250568553743851}
100+
- component: {fileID: 4694737798454055876}
101+
- component: {fileID: 8922856363199415460}
100102
m_Layer: 0
101103
m_Name: GridVania_Ladder
102104
m_TagString: Untagged
@@ -136,3 +138,63 @@ MonoBehaviour:
136138
_setSortingOrder: 1
137139
_setOpacity: 1
138140
_setEntityColor: 1
141+
--- !u!114 &4694737798454055876
142+
MonoBehaviour:
143+
m_ObjectHideFlags: 0
144+
m_CorrespondingSourceObject: {fileID: 0}
145+
m_PrefabInstance: {fileID: 0}
146+
m_PrefabAsset: {fileID: 0}
147+
m_GameObject: {fileID: 6381717676898315408}
148+
m_Enabled: 1
149+
m_EditorHideFlags: 0
150+
m_Script: {fileID: 11500000, guid: 0b0571a2f3dca1a4692e7ec77ada60c9, type: 3}
151+
m_Name:
152+
m_EditorClassIdentifier:
153+
_renderer: {fileID: 2400257763338206285}
154+
_collider: {fileID: 8922856363199415460}
155+
--- !u!61 &8922856363199415460
156+
BoxCollider2D:
157+
m_ObjectHideFlags: 0
158+
m_CorrespondingSourceObject: {fileID: 0}
159+
m_PrefabInstance: {fileID: 0}
160+
m_PrefabAsset: {fileID: 0}
161+
m_GameObject: {fileID: 6381717676898315408}
162+
m_Enabled: 1
163+
serializedVersion: 3
164+
m_Density: 1
165+
m_Material: {fileID: 0}
166+
m_IncludeLayers:
167+
serializedVersion: 2
168+
m_Bits: 0
169+
m_ExcludeLayers:
170+
serializedVersion: 2
171+
m_Bits: 0
172+
m_LayerOverridePriority: 0
173+
m_ForceSendLayers:
174+
serializedVersion: 2
175+
m_Bits: 4294967295
176+
m_ForceReceiveLayers:
177+
serializedVersion: 2
178+
m_Bits: 4294967295
179+
m_ContactCaptureLayers:
180+
serializedVersion: 2
181+
m_Bits: 4294967295
182+
m_CallbackLayers:
183+
serializedVersion: 2
184+
m_Bits: 4294967295
185+
m_IsTrigger: 1
186+
m_UsedByEffector: 0
187+
m_CompositeOperation: 0
188+
m_CompositeOrder: 0
189+
m_Offset: {x: 0.5, y: -0.5}
190+
m_SpriteTilingProperty:
191+
border: {x: 0, y: 0, z: 0, w: 0}
192+
pivot: {x: 0, y: 0}
193+
oldSize: {x: 0, y: 0}
194+
newSize: {x: 0, y: 0}
195+
adaptiveTilingThreshold: 0
196+
drawMode: 0
197+
adaptiveTiling: 0
198+
m_AutoTiling: 0
199+
m_Size: {x: 1, y: 1}
200+
m_EdgeRadius: 0

Assets/Tests/Misc/OtherTechTests/LevelsVania/Items/LevelsVania_Ladder.prefab

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Transform:
2626
m_GameObject: {fileID: 392067290705676212}
2727
serializedVersion: 2
2828
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
29-
m_LocalPosition: {x: 0.5, y: -0.5, z: 0}
29+
m_LocalPosition: {x: 0, y: 0, z: 0}
3030
m_LocalScale: {x: 1, y: 1, z: 1}
3131
m_ConstrainProportionsScale: 0
3232
m_Children: []
@@ -76,11 +76,11 @@ SpriteRenderer:
7676
m_SortingLayerID: 0
7777
m_SortingLayer: 0
7878
m_SortingOrder: 0
79-
m_Sprite: {fileID: 21300000, guid: a0ec3126b00c562449ef4e99a4da11fc, type: 3}
79+
m_Sprite: {fileID: 21300000, guid: e53a6a46125489046aa60333dd75bf44, type: 3}
8080
m_Color: {r: 1, g: 1, b: 1, a: 1}
8181
m_FlipX: 0
8282
m_FlipY: 0
83-
m_DrawMode: 0
83+
m_DrawMode: 2
8484
m_Size: {x: 1, y: 1}
8585
m_AdaptiveModeThreshold: 0.5
8686
m_SpriteTileMode: 0
@@ -97,6 +97,8 @@ GameObject:
9797
m_Component:
9898
- component: {fileID: 5922710633718950015}
9999
- component: {fileID: 2594250568553743851}
100+
- component: {fileID: 6246956699239339519}
101+
- component: {fileID: 5032531129016477869}
100102
m_Layer: 0
101103
m_Name: LevelsVania_Ladder
102104
m_TagString: Untagged
@@ -136,3 +138,63 @@ MonoBehaviour:
136138
_setSortingOrder: 1
137139
_setOpacity: 1
138140
_setEntityColor: 1
141+
--- !u!114 &6246956699239339519
142+
MonoBehaviour:
143+
m_ObjectHideFlags: 0
144+
m_CorrespondingSourceObject: {fileID: 0}
145+
m_PrefabInstance: {fileID: 0}
146+
m_PrefabAsset: {fileID: 0}
147+
m_GameObject: {fileID: 6381717676898315408}
148+
m_Enabled: 1
149+
m_EditorHideFlags: 0
150+
m_Script: {fileID: 11500000, guid: 0b0571a2f3dca1a4692e7ec77ada60c9, type: 3}
151+
m_Name:
152+
m_EditorClassIdentifier:
153+
_renderer: {fileID: 2400257763338206285}
154+
_collider: {fileID: 5032531129016477869}
155+
--- !u!61 &5032531129016477869
156+
BoxCollider2D:
157+
m_ObjectHideFlags: 0
158+
m_CorrespondingSourceObject: {fileID: 0}
159+
m_PrefabInstance: {fileID: 0}
160+
m_PrefabAsset: {fileID: 0}
161+
m_GameObject: {fileID: 6381717676898315408}
162+
m_Enabled: 1
163+
serializedVersion: 3
164+
m_Density: 1
165+
m_Material: {fileID: 0}
166+
m_IncludeLayers:
167+
serializedVersion: 2
168+
m_Bits: 0
169+
m_ExcludeLayers:
170+
serializedVersion: 2
171+
m_Bits: 0
172+
m_LayerOverridePriority: 0
173+
m_ForceSendLayers:
174+
serializedVersion: 2
175+
m_Bits: 4294967295
176+
m_ForceReceiveLayers:
177+
serializedVersion: 2
178+
m_Bits: 4294967295
179+
m_ContactCaptureLayers:
180+
serializedVersion: 2
181+
m_Bits: 4294967295
182+
m_CallbackLayers:
183+
serializedVersion: 2
184+
m_Bits: 4294967295
185+
m_IsTrigger: 0
186+
m_UsedByEffector: 0
187+
m_CompositeOperation: 0
188+
m_CompositeOrder: 0
189+
m_Offset: {x: 0.5, y: -0.5}
190+
m_SpriteTilingProperty:
191+
border: {x: 0, y: 0, z: 0, w: 0}
192+
pivot: {x: 0, y: 0}
193+
oldSize: {x: 0, y: 0}
194+
newSize: {x: 0, y: 0}
195+
adaptiveTilingThreshold: 0
196+
drawMode: 0
197+
adaptiveTiling: 0
198+
m_AutoTiling: 0
199+
m_Size: {x: 1, y: 1}
200+
m_EdgeRadius: 0

0 commit comments

Comments
 (0)