Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
72a2816
about to implement orientation cube
Hunter-Unity May 6, 2020
fc655b2
oCube spawining works. ready to train
Hunter-Unity May 6, 2020
9f41d96
working. about to try com
Hunter-Unity May 6, 2020
1ee5220
ready for training
Hunter-Unity May 7, 2020
5c33b27
add random rot on episode start
Hunter-Unity May 7, 2020
07784eb
feet now alternate but runs backwards
Hunter-Unity May 7, 2020
d2f9c26
still running with right leg in front
Hunter-Unity May 8, 2020
4a9d946
increased joint strength to 40k
Hunter-Unity May 8, 2020
58b5fcc
removed texture example
Hunter-Unity May 10, 2020
f84da49
reduced maxAngVel, enabled enhanced determinism, cont spec
Hunter-Unity May 11, 2020
36ace77
rebuilt walker ragdoll to scale 1
Hunter-Unity May 11, 2020
97f73cf
rebuilt ragdoll ready
Hunter-Unity May 11, 2020
f236c37
update walker pair prefab
Hunter-Unity May 11, 2020
d2a9fea
fixed bp heirarchy
Hunter-Unity May 11, 2020
6a66ead
added trained model, renamed scene, usecollisioncallbacks
Hunter-Unity May 11, 2020
9113c8e
updated dynamic platforms
Hunter-Unity May 11, 2020
647e2ab
added dynamic walker tf file. max speed 5
Hunter-Unity May 12, 2020
07956cc
DynamicWalker working. has working nn file
Hunter-Unity May 12, 2020
774586d
collect local rotations
Hunter-Unity May 12, 2020
5802e2a
added new dynamic nn file
Hunter-Unity May 13, 2020
aa3f07f
hip facing reward
Hunter-Unity May 13, 2020
ce314b8
Create WalkerDynamic.yaml
Hunter-Unity May 14, 2020
ef99881
fix hip rotation
Hunter-Unity May 14, 2020
290a667
about to clean up code
Hunter-Unity May 14, 2020
7afecf0
added dirIndicator and orentCubeGizmo
Hunter-Unity May 14, 2020
40049d5
clean up
Hunter-Unity May 14, 2020
eb5ea43
cleanup
Hunter-Unity May 15, 2020
9b4160b
updated WalkerStatic scene with new ragdoll
Hunter-Unity May 15, 2020
62648e2
cleanup
Hunter-Unity May 15, 2020
8990ae2
updated walker dynamic demo file. cleanup
Hunter-Unity May 15, 2020
2375709
iterate through list not dict to collect observations
Hunter-Unity May 15, 2020
8194ef3
increase gravity to 1.5
Hunter-Unity May 15, 2020
9d093ef
try 100M steps on walkerdynamic
Hunter-Unity May 16, 2020
aa3189b
100M steps
Hunter-Unity May 16, 2020
dc44378
add dir vector obsv
Hunter-Unity May 18, 2020
3b0b6e8
2e7 steps
Hunter-Unity May 18, 2020
6696233
testing new nn models
Hunter-Unity May 18, 2020
6ad6bf1
testing bigger batch size
Hunter-Unity May 19, 2020
891ef4f
try 8x mem for cloud
Hunter-Unity May 20, 2020
815ef1a
8x batch size for cloud test
Hunter-Unity May 20, 2020
af7ff42
epoch 10
Hunter-Unity May 20, 2020
3e3a024
hyptest
Hunter-Unity May 20, 2020
e705f6e
cp
Hunter-Unity May 20, 2020
0538cc8
increase timescale for cloudtraining
Hunter-Unity May 26, 2020
82ead38
cp
Hunter-Unity May 26, 2020
72f574e
try new cluster
Hunter-Unity May 26, 2020
d6848db
cp
Hunter-Unity May 27, 2020
c441fba
200k buff cloud
Hunter-Unity May 27, 2020
7f0f4e7
cleanup & put direction indicator in separate script
Hunter-Unity May 27, 2020
080dea3
update configs
Hunter-Unity May 27, 2020
46d1080
about to implement orientation cube
Hunter-Unity May 6, 2020
30eacfa
oCube spawining works. ready to train
Hunter-Unity May 6, 2020
879a455
working. about to try com
Hunter-Unity May 6, 2020
708e409
ready for training
Hunter-Unity May 7, 2020
e2d1937
add random rot on episode start
Hunter-Unity May 7, 2020
0663e05
feet now alternate but runs backwards
Hunter-Unity May 7, 2020
2c51c87
still running with right leg in front
Hunter-Unity May 8, 2020
d839e81
increased joint strength to 40k
Hunter-Unity May 8, 2020
8621aa1
removed texture example
Hunter-Unity May 10, 2020
08d6ed2
reduced maxAngVel, enabled enhanced determinism, cont spec
Hunter-Unity May 11, 2020
c9282b2
rebuilt walker ragdoll to scale 1
Hunter-Unity May 11, 2020
00fedd8
rebuilt ragdoll ready
Hunter-Unity May 11, 2020
fff528b
update walker pair prefab
Hunter-Unity May 11, 2020
1e6224c
fixed bp heirarchy
Hunter-Unity May 11, 2020
f42f9fa
added trained model, renamed scene, usecollisioncallbacks
Hunter-Unity May 11, 2020
8016295
updated dynamic platforms
Hunter-Unity May 11, 2020
eaf247b
added dynamic walker tf file. max speed 5
Hunter-Unity May 12, 2020
beeb71a
DynamicWalker working. has working nn file
Hunter-Unity May 12, 2020
9ac418a
collect local rotations
Hunter-Unity May 12, 2020
2e40a30
added new dynamic nn file
Hunter-Unity May 13, 2020
0432243
hip facing reward
Hunter-Unity May 13, 2020
420ff9a
Create WalkerDynamic.yaml
Hunter-Unity May 14, 2020
0525bc0
fix hip rotation
Hunter-Unity May 14, 2020
5b9c82f
about to clean up code
Hunter-Unity May 14, 2020
b96e2d3
added dirIndicator and orentCubeGizmo
Hunter-Unity May 14, 2020
725a6e3
clean up
Hunter-Unity May 14, 2020
edbceb1
cleanup
Hunter-Unity May 15, 2020
b8bd893
updated WalkerStatic scene with new ragdoll
Hunter-Unity May 15, 2020
bd1c3d3
cleanup
Hunter-Unity May 15, 2020
6e33d5a
updated walker dynamic demo file. cleanup
Hunter-Unity May 15, 2020
4b1bc5e
iterate through list not dict to collect observations
Hunter-Unity May 15, 2020
c1ab194
increase gravity to 1.5
Hunter-Unity May 15, 2020
a9f63ce
try 100M steps on walkerdynamic
Hunter-Unity May 16, 2020
8345f65
100M steps
Hunter-Unity May 16, 2020
4e8caef
add dir vector obsv
Hunter-Unity May 18, 2020
372b1d1
2e7 steps
Hunter-Unity May 18, 2020
10a338b
testing new nn models
Hunter-Unity May 18, 2020
7b8fea0
testing bigger batch size
Hunter-Unity May 19, 2020
7d4d49f
try 8x mem for cloud
Hunter-Unity May 20, 2020
372e0f6
8x batch size for cloud test
Hunter-Unity May 20, 2020
cd65fee
epoch 10
Hunter-Unity May 20, 2020
92d6b07
hyptest
Hunter-Unity May 20, 2020
5716b21
cp
Hunter-Unity May 20, 2020
e984a53
increase timescale for cloudtraining
Hunter-Unity May 26, 2020
65025de
cp
Hunter-Unity May 26, 2020
383afdd
try new cluster
Hunter-Unity May 26, 2020
f8972a7
cp
Hunter-Unity May 27, 2020
f17f0cd
200k buff cloud
Hunter-Unity May 27, 2020
d388e3e
cleanup & put direction indicator in separate script
Hunter-Unity May 27, 2020
b1cc0e7
update configs
Hunter-Unity May 27, 2020
fb3f468
Merge branch 'hh/develop/dynamic-walker' of https://github.com/Unity-…
Hunter-Unity May 27, 2020
ee71865
update configs to new class format
Hunter-Unity May 27, 2020
38a2fae
added final nn files
Hunter-Unity May 28, 2020
8ad2659
more cleanup
Hunter-Unity May 28, 2020
3c40e37
new walker image for docs
Hunter-Unity May 28, 2020
f3279c7
Update walker docs
Hunter-Unity May 28, 2020
98522e6
remove old gitignore item
Hunter-Unity May 28, 2020
a82955c
cleanup
Hunter-Unity May 28, 2020
25a1d05
Delete trainer_config.yaml
Hunter-Unity May 28, 2020
ce4c616
Update CHANGELOG.md
Hunter-Unity May 28, 2020
4e7468a
remove code comment
Hunter-Unity May 28, 2020
9946be8
changed property to float
Hunter-Unity Jun 2, 2020
9dd63dd
rename variable
Hunter-Unity Jun 2, 2020
b48fcb2
remove header
Hunter-Unity Jun 2, 2020
52f7621
rename function
Hunter-Unity Jun 2, 2020
2bd8d67
added code comment and consolidated similar properties
Hunter-Unity Jun 2, 2020
36a046b
removed unused asset
Hunter-Unity Jun 2, 2020
e058ccf
make maxAngularVelocity a constant
Hunter-Unity Jun 2, 2020
f4dfae3
cleeanup remove tab
Hunter-Unity Jun 2, 2020
62c9997
cleanup - remove unneeded header attr
Hunter-Unity Jun 2, 2020
0e2bdd3
added code comments
Hunter-Unity Jun 2, 2020
b3ca41b
auto-format doc to remove unwanted tabs
Hunter-Unity Jun 2, 2020
9f2f67e
add new trained model. increase max step for dynamic
Hunter-Unity Jun 3, 2020
e16b5a4
add code comments. update oCube system. cleanup
Hunter-Unity Jun 3, 2020
fe3ed60
move orientation cube to shared prefabs
Hunter-Unity Jun 3, 2020
ca4e81d
refactored reward function variables
Hunter-Unity Jun 3, 2020
e475990
removed header
Hunter-Unity Jun 3, 2020
ec3d7b4
add SAC configs
Hunter-Unity Jun 3, 2020
7134815
added new dynamic walker nn file
Hunter-Unity Jun 4, 2020
fa53e0b
remove old config
Hunter-Unity Jun 4, 2020
c729f7f
add new config
Hunter-Unity Jun 4, 2020
fc32f23
fix project ver
Hunter-Unity Jun 4, 2020
b95305e
Merge branch 'master' into hh/develop/dynamic-walker
Hunter-Unity Jun 4, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Project/Assets/ExpertWalkerDyn.demo
Binary file not shown.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2591864625898824423
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2591864625898824440}
- component: {fileID: 2591864625898824442}
- component: {fileID: 2591864625898824441}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2591864625898824440
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2591864625898824423}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2591864627374185741}
m_Father: {fileID: 2591864627249999504}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2591864625898824442
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2591864625898824423}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2591864625898824441
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2591864625898824423}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 5c59bd36def9a4684be49a21cf201a2d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &2591864627249999519
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2591864627249999504}
m_Layer: 0
m_Name: OrientationCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2591864627249999504
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2591864627249999519}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -498.349, y: -0.45, z: -250.09256}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2591864625898824440}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2591864627374185740
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2591864627374185741}
m_Layer: 0
m_Name: Arrow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2591864627374185741
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2591864627374185740}
m_LocalRotation: {x: -0, y: -0.7071066, z: -0, w: 0.707107}
m_LocalPosition: {x: 0, y: 0.119, z: 0}
m_LocalScale: {x: 0.7764428, y: 0.7764428, z: 0.7764428}
m_Children:
- {fileID: 3256674261123397973}
- {fileID: 3257148088533667597}
m_Father: {fileID: 2591864625898824440}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: -90.00001, z: 0}
--- !u!1 &3258603775602446353
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3256674261123397973}
- component: {fileID: 3263562959519547143}
- component: {fileID: 3273629389920486807}
m_Layer: 0
m_Name: symbol_tri
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3256674261123397973
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3258603775602446353}
m_LocalRotation: {x: -0.5000024, y: -0.49999765, z: 0.4999684, w: -0.5000316}
m_LocalPosition: {x: 0.22598267, y: 0.5, z: 0}
m_LocalScale: {x: 0.39859864, y: 0.4054339, z: 0.25}
m_Children: []
m_Father: {fileID: 2591864627374185741}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3263562959519547143
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3258603775602446353}
m_Mesh: {fileID: 4300000, guid: 09e2da39770c24cc9a71e5dbf05a1e85, type: 3}
--- !u!23 &3273629389920486807
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3258603775602446353}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 69fefdd39d2b34b169e921910bed9c0d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &3259145720179606813
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3257148088533667597}
- component: {fileID: 3263743565359806181}
- component: {fileID: 3272323263339836425}
m_Layer: 0
m_Name: Symbol_Triangle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3257148088533667597
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3259145720179606813}
m_LocalRotation: {x: -0.5000024, y: -0.49999765, z: 0.4999684, w: -0.5000316}
m_LocalPosition: {x: -0.20300293, y: 0.5, z: 0}
m_LocalScale: {x: 0.31112, y: 0.4054339, z: 0.085725}
m_Children: []
m_Father: {fileID: 2591864627374185741}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 270.007}
--- !u!33 &3263743565359806181
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3259145720179606813}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3272323263339836425
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3259145720179606813}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 69fefdd39d2b34b169e921910bed9c0d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Unity.MLAgentsExamples
{
public class DirectionIndicator : MonoBehaviour
{
public Transform transformToFollow; //ex: hips or body
public Transform targetToLookAt; //target in the scene the indicator will point to
public float heightOffset;
private float m_StartingYPos;

void OnEnable()
{
m_StartingYPos = transform.position.y;
}

void Update()
{
transform.position = new Vector3(transformToFollow.position.x, m_StartingYPos + heightOffset, transformToFollow.position.z);
Vector3 walkDir = targetToLookAt.position - transform.position;
walkDir.y = 0; //flatten dir on the y
transform.rotation = Quaternion.LookRotation(walkDir);
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ public class JointDriveController : MonoBehaviour
[HideInInspector] public Dictionary<Transform, BodyPart> bodyPartsDict = new Dictionary<Transform, BodyPart>();

[HideInInspector] public List<BodyPart> bodyPartsList = new List<BodyPart>();
const float k_MaxAngularVelocity = 50.0f;

/// <summary>
/// Create BodyPart object and add it to dictionary.
Expand All @@ -122,7 +123,7 @@ public void SetupBodyPart(Transform t)
startingPos = t.position,
startingRot = t.rotation
};
bp.rb.maxAngularVelocity = 100;
bp.rb.maxAngularVelocity = k_MaxAngularVelocity;

// Add & setup the ground contact script
bp.groundContact = t.GetComponent<GroundContact>();
Expand Down
Loading