浏览代码

fix max step tennis

/asymm-envs
Andrew Cohen 5 年前
当前提交
95f3ffab
共有 4 个文件被更改,包括 32 次插入25 次删除
  1. 6
      Project/Assets/ML-Agents/Examples/Tennis/Prefabs/TennisArea.prefab
  2. 36
      Project/Assets/ML-Agents/Examples/Tennis/Scripts/HitWall.cs
  3. 10
      Project/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs
  4. 5
      Project/Assets/ML-Agents/Examples/Tennis/Scripts/TennisArea.cs

6
Project/Assets/ML-Agents/Examples/Tennis/Prefabs/TennisArea.prefab


agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
maxStep: 0
maxStep: 3000
ball: {fileID: 1273406647218856}
invertX: 0
score: 0

m_Name:
m_EditorClassIdentifier:
areaObject: {fileID: 1541947554534326}
lastAgentHit: 0
lastFloorHit: 0
--- !u!1 &1299636753784036
GameObject:
m_ObjectHideFlags: 0

agentParameters:
maxStep: 0
hasUpgradedFromAgentParameters: 1
maxStep: 0
maxStep: 3000
ball: {fileID: 1273406647218856}
invertX: 1
score: 0

36
Project/Assets/ML-Agents/Examples/Tennis/Scripts/HitWall.cs


public class HitWall : MonoBehaviour
{
public GameObject areaObject;
public int lastAgentHit;
int m_LastAgentHit;
public enum FloorHit
{

FloorBHit
}
public FloorHit lastFloorHit;
FloorHit m_LastFloorHit;
TennisArea m_Area;
TennisAgent m_AgentA;

m_AgentB = m_Area.agentB.GetComponent<TennisAgent>();
}
public void ResetPoint()
{
m_LastFloorHit = FloorHit.Service;
m_LastAgentHit = -1;
}
lastFloorHit = FloorHit.Service;
lastAgentHit = -1;
}
void AgentAWins()

if (collision.gameObject.name == "wallA")
{
// Agent A hits into wall or agent B hit a winner
if (lastAgentHit == 0 || lastFloorHit == FloorHit.FloorAHit)
if (m_LastAgentHit == 0 || m_LastFloorHit == FloorHit.FloorAHit)
{
AgentBWins();
}

else if (collision.gameObject.name == "wallB")
{
// Agent B hits into wall or agent A hit a winner
if (lastAgentHit == 1 || lastFloorHit == FloorHit.FloorBHit)
if (m_LastAgentHit == 1 || m_LastFloorHit == FloorHit.FloorBHit)
{
AgentAWins();
}

else if (collision.gameObject.name == "floorA")
{
// Agent A hits into floor, double bounce or service
if (lastAgentHit == 0 || lastFloorHit == FloorHit.FloorAHit || lastFloorHit == FloorHit.Service)
if (m_LastAgentHit == 0 || m_LastFloorHit == FloorHit.FloorAHit || m_LastFloorHit == FloorHit.Service)
lastFloorHit = FloorHit.FloorAHit;
m_LastFloorHit = FloorHit.FloorAHit;
if (lastAgentHit == 1 || lastFloorHit == FloorHit.FloorBHit || lastFloorHit == FloorHit.Service)
if (m_LastAgentHit == 1 || m_LastFloorHit == FloorHit.FloorBHit || m_LastFloorHit == FloorHit.Service)
lastFloorHit = FloorHit.FloorBHit;
m_LastFloorHit = FloorHit.FloorBHit;
}
}
}

if (lastAgentHit == 0)
if (m_LastAgentHit == 0)
{
AgentBWins();
}

lastAgentHit = 0;
lastFloorHit = FloorHit.FloorHitUnset;
m_LastAgentHit = 0;
m_LastFloorHit = FloorHit.FloorHitUnset;
if (lastAgentHit == 1)
if (m_LastAgentHit == 1)
lastAgentHit = 1;
lastFloorHit = FloorHit.FloorHitUnset;
m_LastAgentHit = 1;
m_LastFloorHit = FloorHit.FloorHitUnset;
}
}
}

10
Project/Assets/ML-Agents/Examples/Tennis/Scripts/TennisAgent.cs


Text m_TextComponent;
Rigidbody m_AgentRb;
Rigidbody m_BallRb;
TennisArea m_Area;
float m_InvertMult;
FloatPropertiesChannel m_ResetParams;

{
m_AgentRb = GetComponent<Rigidbody>();
m_BallRb = ball.GetComponent<Rigidbody>();
m_Area = myArea.GetComponent<TennisArea>();
var canvas = GameObject.Find(k_CanvasName);
GameObject scoreBoard;
m_ResetParams = SideChannelUtils.GetSideChannel<FloatPropertiesChannel>();

transform.position.z);
}
// AddReward(-1f / 3000f);
timePenalty += -1f / 3000f;
timePenalty += -1f / 3000f;
m_TextComponent.text = score.ToString();
}

timePenalty = 0;
m_InvertMult = invertX ? -1f : 1f;
if (m_InvertMult == 1f)
{
m_Area.MatchReset();
}
SetResetParameters();
}

5
Project/Assets/ML-Agents/Examples/Tennis/Scripts/TennisArea.cs


public GameObject agentA;
public GameObject agentB;
Rigidbody m_BallRb;
HitWall m_BallScript;
m_BallScript = ball.GetComponent<HitWall>();
MatchReset();
}

}
m_BallRb.velocity = new Vector3(0f, 0f, 0f);
ball.transform.localScale = new Vector3(.5f, .5f, .5f);
ball.GetComponent<HitWall>().lastAgentHit = -1;
m_BallScript.ResetPoint();
}
void FixedUpdate()

正在加载...
取消
保存