浏览代码

add basketball example

/develop/basketball
Ruo-Ping Dong 5 年前
当前提交
262f38ea
共有 41 个文件被更改,包括 5364 次插入0 次删除
  1. 26
      config/ppo/BasketBall.yaml
  2. 29
      config/ppo/VisualBasketBall.yaml
  3. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials.meta
  4. 77
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Ball.mat
  5. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Ball.mat.meta
  6. 77
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Board.mat
  7. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Board.mat.meta
  8. 14
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Bounce.physicMaterial
  9. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Bounce.physicMaterial.meta
  10. 77
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Floor.mat
  11. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Floor.mat.meta
  12. 77
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Hoop.mat
  13. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Materials/Hoop.mat.meta
  14. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Prefab.meta
  15. 1001
      Project/Assets/ML-Agents/Examples/BasketBall/Prefab/TrainingArea.prefab
  16. 7
      Project/Assets/ML-Agents/Examples/BasketBall/Prefab/TrainingArea.prefab.meta
  17. 1001
      Project/Assets/ML-Agents/Examples/BasketBall/Prefab/VisualTrainingArea.prefab
  18. 7
      Project/Assets/ML-Agents/Examples/BasketBall/Prefab/VisualTrainingArea.prefab.meta
  19. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Scenes.meta
  20. 1001
      Project/Assets/ML-Agents/Examples/BasketBall/Scenes/BasketBall.unity
  21. 7
      Project/Assets/ML-Agents/Examples/BasketBall/Scenes/BasketBall.unity.meta
  22. 1001
      Project/Assets/ML-Agents/Examples/BasketBall/Scenes/VisualBasketBall.unity
  23. 7
      Project/Assets/ML-Agents/Examples/BasketBall/Scenes/VisualBasketBall.unity.meta
  24. 8
      Project/Assets/ML-Agents/Examples/BasketBall/Scripts.meta
  25. 128
      Project/Assets/ML-Agents/Examples/BasketBall/Scripts/PlayerAgent.cs
  26. 11
      Project/Assets/ML-Agents/Examples/BasketBall/Scripts/PlayerAgent.cs.meta
  27. 18
      Project/Assets/ML-Agents/Examples/BasketBall/Scripts/ScoreArea.cs
  28. 11
      Project/Assets/ML-Agents/Examples/BasketBall/Scripts/ScoreArea.cs.meta
  29. 8
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels.meta
  30. 226
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-499973.nn
  31. 11
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-499973.nn.meta
  32. 240
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-999982.nn
  33. 11
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-999982.nn.meta
  34. 208
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall.nn
  35. 11
      Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall.nn.meta

26
config/ppo/BasketBall.yaml


behaviors:
BasketBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 12000
learning_rate: 0.0003
beta: 0.001
epsilon: 0.2
lambd: 0.99
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: true
hidden_units: 128
num_layers: 2
vis_encode_type: simple
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 5000000
time_horizon: 1000
summary_freq: 12000
threaded: true

29
config/ppo/VisualBasketBall.yaml


behaviors:
VisualBasketBall:
trainer_type: ppo
hyperparameters:
batch_size: 64
buffer_size: 1024
learning_rate: 0.0003
beta: 0.01
epsilon: 0.2
lambd: 0.95
num_epoch: 3
learning_rate_schedule: linear
network_settings:
normalize: false
hidden_units: 128
num_layers: 1
vis_encode_type: simple
memory:
sequence_length: 64
memory_size: 128
reward_signals:
extrinsic:
gamma: 0.99
strength: 1.0
keep_checkpoints: 5
max_steps: 10000000
time_horizon: 64
summary_freq: 10000
threaded: true

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials.meta


fileFormatVersion: 2
guid: 0b5ab230866b24a3b8d8c0adc8cb5b9e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Ball.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Ball
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.9622642, g: 0.38885725, b: 0.15886435, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Ball.mat.meta


fileFormatVersion: 2
guid: 92d877c9039ff4776ba0cabe65eee47c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Board.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Board
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Board.mat.meta


fileFormatVersion: 2
guid: 262c5ca1c192348b2a912f062d3a4b22
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

14
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Bounce.physicMaterial


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Bounce
dynamicFriction: 0.6
staticFriction: 0.6
bounciness: 0.1
frictionCombine: 0
bounceCombine: 0

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Bounce.physicMaterial.meta


fileFormatVersion: 2
guid: 8490576635fcf472a913359207fa2fa7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Floor.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Floor
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.36275092, g: 0.4627451, b: 0.32156864, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Floor.mat.meta


fileFormatVersion: 2
guid: e7b0df276f4a14d97aa2a5eb382602b1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

77
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Hoop.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Hoop
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.8962264, g: 0.080322154, b: 0.080322154, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

8
Project/Assets/ML-Agents/Examples/BasketBall/Materials/Hoop.mat.meta


fileFormatVersion: 2
guid: 1b2833b045f534f89894ce09f15a276f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/BasketBall/Prefab.meta


fileFormatVersion: 2
guid: 9fb2db8bd9e9a4854be835b0012849a2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/BasketBall/Prefab/TrainingArea.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/BasketBall/Prefab/TrainingArea.prefab.meta


fileFormatVersion: 2
guid: f694886409908490091ef392c51fa27e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/BasketBall/Prefab/VisualTrainingArea.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/BasketBall/Prefab/VisualTrainingArea.prefab.meta


fileFormatVersion: 2
guid: 431733b35773a4c5db9a7c0079c45eaf
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/BasketBall/Scenes.meta


fileFormatVersion: 2
guid: b00027089f64e44b79bca9e549d43566
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/BasketBall/Scenes/BasketBall.unity
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/BasketBall/Scenes/BasketBall.unity.meta


fileFormatVersion: 2
guid: fc005e945fe224d9986906a224737cc3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/BasketBall/Scenes/VisualBasketBall.unity
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/BasketBall/Scenes/VisualBasketBall.unity.meta


fileFormatVersion: 2
guid: 9c5d152c3402c40e5ba950e918935cea
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/BasketBall/Scripts.meta


fileFormatVersion: 2
guid: 4bda4f6897ee3453c87017706ade30cb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

128
Project/Assets/ML-Agents/Examples/BasketBall/Scripts/PlayerAgent.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
public class PlayerAgent : Agent
{
public Rigidbody rBall;
public Transform Target;
public Transform Aimpoint;
public float MoveSpeed = 0.1f;
public float ForceMultiplier = 10;
public bool useVectorObs;
Vector3 ballInitPos;
Vector3 aimInitPos;
bool holdBall;
bool win;
void Start()
{
rBall.useGravity = false;
ballInitPos = rBall.transform.localPosition;
aimInitPos = Aimpoint.localPosition;
holdBall = true;
win = false;
}
public override void OnEpisodeBegin()
{
if (rBall.transform.localPosition.y <= 0.6f)
{
rBall.angularVelocity = Vector3.zero;
rBall.velocity = Vector3.zero;
rBall.transform.localPosition = ballInitPos;
rBall.useGravity = false;
}
Aimpoint.localPosition = aimInitPos;
holdBall = true;
win = false;
// Move the target to a new spot
Target.localPosition = new Vector3(Random.value * 6 - 3,
Random.value * 4 - 2,
Random.value * 2 + 2);
}
public override void CollectObservations(VectorSensor sensor)
{
if (useVectorObs)
{
sensor.AddObservation(Target.localPosition);
sensor.AddObservation(Aimpoint.localPosition.x);
sensor.AddObservation(Aimpoint.localPosition.y);
sensor.AddObservation(rBall.transform.localPosition);
sensor.AddObservation(rBall.velocity);
}
}
public override void OnActionReceived(float[] vectorAction)
{
AddReward(-0.001f);
// Move aimpoint
Vector3 aimMove = Vector3.zero;
aimMove.x = vectorAction[0]*MoveSpeed;
aimMove.y = vectorAction[1]*MoveSpeed;
Aimpoint.localPosition += aimMove;
// Vector3 x = (Aimpoint.localPosition - this.transform.localPosition);
// Debug.Log("x");
// Debug.Log(x);
// Shoot ball
bool shootBall = vectorAction[2] >= 0.5;
if (shootBall && holdBall)
{
rBall.useGravity = true;
// Vector3 shootSignal = (Aimpoint.localPosition - this.transform.localPosition);
Vector3 origin = Vector3.zero;
origin.z = -10;
Vector3 shootSignal = (Aimpoint.localPosition - origin);
rBall.AddForce(shootSignal * ForceMultiplier);
holdBall = false;
}
// Reached target
// if (ScoreArea.GetComponent<ScoreArea>().Hit)
// {
// SetReward(1.0f);
// Debug.Log("Hit!");
// win = true;
// ScoreArea.GetComponent<ScoreArea>().Hit = false;
// }
// Fell off platform
if (rBall.transform.localPosition.y <= 0.5f)
{
if (!win)
{
// SetReward(-1.0f);
AddReward(-1.0f);
}
EndEpisode();
}
}
public override void Heuristic(float[] actionsOut)
{
actionsOut[0] = Input.GetAxis("Horizontal");
actionsOut[1] = Input.GetAxis("Vertical");
actionsOut[2] = Input.GetAxis("Jump");
}
public void Hit()
{
// SetReward(1.0f);
AddReward(1.0f);
win = true;
// Debug.Log("Hit!");
}
}

11
Project/Assets/ML-Agents/Examples/BasketBall/Scripts/PlayerAgent.cs.meta


fileFormatVersion: 2
guid: 6ca17c47c5e72429a9d494cafcb0c4cc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

18
Project/Assets/ML-Agents/Examples/BasketBall/Scripts/ScoreArea.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScoreArea : MonoBehaviour
{
public PlayerAgent agent;
// Update is called once per frame
void OnTriggerEnter(Collider c)
{
if (c.name == "Ball")
{
// Debug.Log("ScoreArea Triggered");
agent.Hit();
}
}
}

11
Project/Assets/ML-Agents/Examples/BasketBall/Scripts/ScoreArea.cs.meta


fileFormatVersion: 2
guid: 80a9e21932265433ab650033e1bedb69
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/BasketBall/TFModels.meta


fileFormatVersion: 2
guid: 82c0015cba1ec4e53a5de74208b292b7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

226
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-499973.nn
文件差异内容过多而无法显示
查看文件

11
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-499973.nn.meta


fileFormatVersion: 2
guid: 68cec7bcdc73f469c928d65fd15c9990
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3}

240
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-999982.nn
文件差异内容过多而无法显示
查看文件

11
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall-999982.nn.meta


fileFormatVersion: 2
guid: bc98ead1ebc2b4276b16451b84d3d857
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3}

208
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall.nn
文件差异内容过多而无法显示
查看文件

11
Project/Assets/ML-Agents/Examples/BasketBall/TFModels/BasketBall.nn.meta


fileFormatVersion: 2
guid: f43b769ef6961464d9badd9252173dbb
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 19ed1486aa27d4903b34839f37b8f69f, type: 3}
正在加载...
取消
保存