-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Add Dynamic Walker. Improved Ragdoll Stability/Performance #4037
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
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 fc655b2
oCube spawining works. ready to train
Hunter-Unity 9f41d96
working. about to try com
Hunter-Unity 1ee5220
ready for training
Hunter-Unity 5c33b27
add random rot on episode start
Hunter-Unity 07784eb
feet now alternate but runs backwards
Hunter-Unity d2f9c26
still running with right leg in front
Hunter-Unity 4a9d946
increased joint strength to 40k
Hunter-Unity 58b5fcc
removed texture example
Hunter-Unity f84da49
reduced maxAngVel, enabled enhanced determinism, cont spec
Hunter-Unity 36ace77
rebuilt walker ragdoll to scale 1
Hunter-Unity 97f73cf
rebuilt ragdoll ready
Hunter-Unity f236c37
update walker pair prefab
Hunter-Unity d2a9fea
fixed bp heirarchy
Hunter-Unity 6a66ead
added trained model, renamed scene, usecollisioncallbacks
Hunter-Unity 9113c8e
updated dynamic platforms
Hunter-Unity 647e2ab
added dynamic walker tf file. max speed 5
Hunter-Unity 07956cc
DynamicWalker working. has working nn file
Hunter-Unity 774586d
collect local rotations
Hunter-Unity 5802e2a
added new dynamic nn file
Hunter-Unity aa3f07f
hip facing reward
Hunter-Unity ce314b8
Create WalkerDynamic.yaml
Hunter-Unity ef99881
fix hip rotation
Hunter-Unity 290a667
about to clean up code
Hunter-Unity 7afecf0
added dirIndicator and orentCubeGizmo
Hunter-Unity 40049d5
clean up
Hunter-Unity eb5ea43
cleanup
Hunter-Unity 9b4160b
updated WalkerStatic scene with new ragdoll
Hunter-Unity 62648e2
cleanup
Hunter-Unity 8990ae2
updated walker dynamic demo file. cleanup
Hunter-Unity 2375709
iterate through list not dict to collect observations
Hunter-Unity 8194ef3
increase gravity to 1.5
Hunter-Unity 9d093ef
try 100M steps on walkerdynamic
Hunter-Unity aa3189b
100M steps
Hunter-Unity dc44378
add dir vector obsv
Hunter-Unity 3b0b6e8
2e7 steps
Hunter-Unity 6696233
testing new nn models
Hunter-Unity 6ad6bf1
testing bigger batch size
Hunter-Unity 891ef4f
try 8x mem for cloud
Hunter-Unity 815ef1a
8x batch size for cloud test
Hunter-Unity af7ff42
epoch 10
Hunter-Unity 3e3a024
hyptest
Hunter-Unity e705f6e
cp
Hunter-Unity 0538cc8
increase timescale for cloudtraining
Hunter-Unity 82ead38
cp
Hunter-Unity 72f574e
try new cluster
Hunter-Unity d6848db
cp
Hunter-Unity c441fba
200k buff cloud
Hunter-Unity 7f0f4e7
cleanup & put direction indicator in separate script
Hunter-Unity 080dea3
update configs
Hunter-Unity 46d1080
about to implement orientation cube
Hunter-Unity 30eacfa
oCube spawining works. ready to train
Hunter-Unity 879a455
working. about to try com
Hunter-Unity 708e409
ready for training
Hunter-Unity e2d1937
add random rot on episode start
Hunter-Unity 0663e05
feet now alternate but runs backwards
Hunter-Unity 2c51c87
still running with right leg in front
Hunter-Unity d839e81
increased joint strength to 40k
Hunter-Unity 8621aa1
removed texture example
Hunter-Unity 08d6ed2
reduced maxAngVel, enabled enhanced determinism, cont spec
Hunter-Unity c9282b2
rebuilt walker ragdoll to scale 1
Hunter-Unity 00fedd8
rebuilt ragdoll ready
Hunter-Unity fff528b
update walker pair prefab
Hunter-Unity 1e6224c
fixed bp heirarchy
Hunter-Unity f42f9fa
added trained model, renamed scene, usecollisioncallbacks
Hunter-Unity 8016295
updated dynamic platforms
Hunter-Unity eaf247b
added dynamic walker tf file. max speed 5
Hunter-Unity beeb71a
DynamicWalker working. has working nn file
Hunter-Unity 9ac418a
collect local rotations
Hunter-Unity 2e40a30
added new dynamic nn file
Hunter-Unity 0432243
hip facing reward
Hunter-Unity 420ff9a
Create WalkerDynamic.yaml
Hunter-Unity 0525bc0
fix hip rotation
Hunter-Unity 5b9c82f
about to clean up code
Hunter-Unity b96e2d3
added dirIndicator and orentCubeGizmo
Hunter-Unity 725a6e3
clean up
Hunter-Unity edbceb1
cleanup
Hunter-Unity b8bd893
updated WalkerStatic scene with new ragdoll
Hunter-Unity bd1c3d3
cleanup
Hunter-Unity 6e33d5a
updated walker dynamic demo file. cleanup
Hunter-Unity 4b1bc5e
iterate through list not dict to collect observations
Hunter-Unity c1ab194
increase gravity to 1.5
Hunter-Unity a9f63ce
try 100M steps on walkerdynamic
Hunter-Unity 8345f65
100M steps
Hunter-Unity 4e8caef
add dir vector obsv
Hunter-Unity 372b1d1
2e7 steps
Hunter-Unity 10a338b
testing new nn models
Hunter-Unity 7b8fea0
testing bigger batch size
Hunter-Unity 7d4d49f
try 8x mem for cloud
Hunter-Unity 372e0f6
8x batch size for cloud test
Hunter-Unity cd65fee
epoch 10
Hunter-Unity 92d6b07
hyptest
Hunter-Unity 5716b21
cp
Hunter-Unity e984a53
increase timescale for cloudtraining
Hunter-Unity 65025de
cp
Hunter-Unity 383afdd
try new cluster
Hunter-Unity f8972a7
cp
Hunter-Unity f17f0cd
200k buff cloud
Hunter-Unity d388e3e
cleanup & put direction indicator in separate script
Hunter-Unity b1cc0e7
update configs
Hunter-Unity fb3f468
Merge branch 'hh/develop/dynamic-walker' of https://github.com/Unity-…
Hunter-Unity ee71865
update configs to new class format
Hunter-Unity 38a2fae
added final nn files
Hunter-Unity 8ad2659
more cleanup
Hunter-Unity 3c40e37
new walker image for docs
Hunter-Unity f3279c7
Update walker docs
Hunter-Unity 98522e6
remove old gitignore item
Hunter-Unity a82955c
cleanup
Hunter-Unity 25a1d05
Delete trainer_config.yaml
Hunter-Unity ce4c616
Update CHANGELOG.md
Hunter-Unity 4e7468a
remove code comment
Hunter-Unity 9946be8
changed property to float
Hunter-Unity 9dd63dd
rename variable
Hunter-Unity b48fcb2
remove header
Hunter-Unity 52f7621
rename function
Hunter-Unity 2bd8d67
added code comment and consolidated similar properties
Hunter-Unity 36a046b
removed unused asset
Hunter-Unity e058ccf
make maxAngularVelocity a constant
Hunter-Unity f4dfae3
cleeanup remove tab
Hunter-Unity 62c9997
cleanup - remove unneeded header attr
Hunter-Unity 0e2bdd3
added code comments
Hunter-Unity b3ca41b
auto-format doc to remove unwanted tabs
Hunter-Unity 9f2f67e
add new trained model. increase max step for dynamic
Hunter-Unity e16b5a4
add code comments. update oCube system. cleanup
Hunter-Unity fe3ed60
move orientation cube to shared prefabs
Hunter-Unity ca4e81d
refactored reward function variables
Hunter-Unity e475990
removed header
Hunter-Unity ec3d7b4
add SAC configs
Hunter-Unity 7134815
added new dynamic walker nn file
Hunter-Unity fa53e0b
remove old config
Hunter-Unity c729f7f
add new config
Hunter-Unity fc32f23
fix project ver
Hunter-Unity b95305e
Merge branch 'master' into hh/develop/dynamic-walker
Hunter-Unity File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Binary file not shown.
4 changes: 2 additions & 2 deletions
4
...mples/Walker/Demos/ExpertWalker.demo.meta → Project/Assets/ExpertWalkerDyn.demo.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
297 changes: 297 additions & 0 deletions
297
Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/OrientationCube.prefab
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
7 changes: 7 additions & 0 deletions
7
Project/Assets/ML-Agents/Examples/SharedAssets/Prefabs/OrientationCube.prefab.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
27 changes: 27 additions & 0 deletions
27
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/DirectionIndicator.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/DirectionIndicator.cs.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.