浏览代码

Balancing changes

/develop/cubewars/splashdamage
Ervin Teng 3 年前
当前提交
79772295
共有 2 个文件被更改,包括 22 次插入12 次删除
  1. 2
      Project/Assets/ML-Agents/Examples/CubeWars/Scripts/LargeCubeAgent.cs
  2. 32
      Project/Assets/ML-Agents/Examples/CubeWars/Scripts/SmallCubeAgent.cs

2
Project/Assets/ML-Agents/Examples/CubeWars/Scripts/LargeCubeAgent.cs


var rayDir = 120.0f * myTransform.forward;
Debug.DrawRay(myTransform.position, rayDir, Color.red, 0f, true);
RaycastHit hit;
if (Physics.SphereCast(transform.position, 7f, rayDir, out hit, 120f))
if (Physics.SphereCast(transform.position, 10f, rayDir, out hit, 120f))
{
if (hit.collider.gameObject.CompareTag("StrongSmallAgent") || hit.collider.gameObject.CompareTag("WeakSmallAgent"))
{

32
Project/Assets/ML-Agents/Examples/CubeWars/Scripts/SmallCubeAgent.cs


float m_MoveSpeed;
float m_TurnSpeed;
float m_Cooldown;
float m_Range = 25f;
float m_Splash = 2f;
public enum Role
{

m_RoleObs[0] = 1f;
m_HitPointsTotal = .5f;
m_Damage = 0f;
m_Heal = .4f;
m_Heal = .2f;
m_Cooldown = .2f;
m_Cooldown = .4f;
m_Splash = 10f;
m_Range = 10f;
}
else if (role == Role.DPS)
{

m_MoveSpeed = 10f;
m_TurnSpeed = 200f;
m_Cooldown = .25f;
m_Splash = 2f;
m_Range = 25f;
}
else if (role == Role.Tank)
{

m_MoveSpeed = 6f;
m_TurnSpeed = 100f;
m_Cooldown = .4f;
m_Splash = 2f;
m_Range = 25f;
}
m_AgentRb = GetComponent<Rigidbody>();

SetResetParameters();
myLaser.maxLength = m_Range;
myLaser.width = m_Splash / 2f;
}
public override void CollectObservations(VectorSensor sensor)

if (shootCommand)
{
if (Time.time > m_ShootTime + .4f)
if (Time.time > m_ShootTime + m_Cooldown)
{
m_Shoot = true;
dirToGo *= 0.5f;

if (m_Shoot)
{
myLaser.isFired = true;
var rayDir = 25.0f * myTransform.forward;
var rayDir = m_Range * myTransform.forward;
if (Physics.SphereCast(transform.position, 2f, rayDir, out hit, 28f))
if (Physics.SphereCast(transform.position, m_Splash, rayDir, out hit, m_Range))
{
if (hit.collider.gameObject.CompareTag("StrongSmallAgent") || hit.collider.gameObject.CompareTag("WeakSmallAgent"))
{

{
AddReward(.1f);
}
myLaser.isFired = true;
else if (Time.time > m_ShootTime + m_Cooldown)
else if (Time.time > m_ShootTime + 0.1f) // This is just how long the graphic stays live
{
myLaser.isFired = false;
}

void HealthStatus()
{
if (m_HitPoints <= 1f && m_HitPoints > .5f)
float hitPointRatio = m_HitPoints / m_HitPointsTotal;
if (hitPointRatio <= 1f && hitPointRatio > .5f)
else if (m_HitPoints <= .5f && m_HitPoints > 0.0f)
else if (hitPointRatio <= .5f && hitPointRatio > 0.0f)
{
gameObject.tag = "WeakSmallAgent";
myBody.GetComponentInChildren<Renderer>().material = weakMaterial;

public override void OnEpisodeBegin()
{
m_HitPoints = m_HitPointsTotal;
HealthStatus();
HealthStatus();
float smallRange = 50f * m_MyArea.range;
transform.position = new Vector3(Random.Range(-smallRange, smallRange),

正在加载...
取消
保存