Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (greenPlayerScript.playerPos == redPlayerScript.playerPos)
        {
            ChangeBothPos();
            if (greenPlayerScript.hasBall)
            {
                greenPlayerScript.AddReward(-0.5f);
            }
            else
            {
                greenPlayerScript.AddReward(-0.5f);
            }

            if (redPlayerScript.hasBall)
            {
                redPlayerScript.AddReward(-0.5f);
            }
            else
            {
                redPlayerScript.AddReward(-0.5f);
            }

            ChangeBallOwner();
        }

        /*  if (TheyCollideInTheSameBlock())
         * {
         * if(hasBall) {AddReward(-0.5f);} else {AddReward(0.5f);}
         * SetNewPosition(PlayerDirection.Left);
         * localBoardManager.ChangeBallOwner();
         * }
         */
    }
Ejemplo n.º 2
0
    public void OneDied(GameObject diedplayer)
    {
        Debug.Log(remainedPlayers);
        PlayerAgent player = diedplayer.GetComponent <PlayerAgent>();

        switch (remainedPlayers)
        {
        case 2:
            player.AddReward(-0.5f);
            break;

        case 3:
            player.AddReward(-1f);
            break;

        case 4:
            player.AddReward(-1.5f);
            break;

        case 5:
            player.AddReward(-2f);
            break;
        }
        remainedPlayers--;
        if (remainedPlayers == 1)
        {
            gameFinish();
        }
    }
Ejemplo n.º 3
0
 public void KilledPlayer()
 {
     kills += 1;
     if (isAgent)
     {
         pa.AddReward(1f);
     }
     gameController.UpdateScore(playerNum);
 }
 public void HealthUp()
 {
     if (health < 3)
     {
         healthDisplay.AddHealth();
         health++;
         agent.AddReward(0.1f);
         healthSound.Play();
     }
 }
Ejemplo n.º 5
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.CompareTag("Water") && playerState != PlayerState.Exhaust)
     {
         playerState = PlayerState.Dive;
         if (playerAgent)
         {
             playerAgent.AddReward(-0.1f);
         }
     }
 }
Ejemplo n.º 6
0
    void OnCollisionEnter(Collision collision)
    {
        if (!hasHit)
        {
            if (collision.gameObject.CompareTag("Body"))
            {
                Player playerData = collision.gameObject.GetComponentInParent <Player>();
                playerData.health -= 10;
                //Debug.Log("Body hit! " + playerData.ToString());
                DestroyProyectile();
            }
            else if (collision.gameObject.CompareTag("Arm"))
            {
                Player playerData = collision.gameObject.GetComponentInParent <Player>();
                playerData.health -= 5;
                //Debug.Log("Arm hit! " + playerData.ToString());
                DestroyProyectile();
            }
            else if (collision.gameObject.CompareTag("Player"))
            {
                Player playerData = collision.gameObject.GetComponent <Player>();
                playerData.health -= 50;
                if (fireFrom)
                {
                    PlayerAgent fireTo = collision.gameObject.GetComponent <PlayerAgent>();
                    fireTo.AddReward(-1f);
                    fireFrom.AddReward(1f);

                    /*if (playerData.health <= 0)
                     * {
                     *  fireFrom.AddReward(1f);
                     * }*/
                }
                //Debug.Log("Player hit! " + playerData.ToString());
                DestroyProyectile();
            }
            else if (collision.gameObject.CompareTag("Wall") || collision.gameObject.CompareTag("AreaWall"))
            {
                if (fireFrom)
                {
                    fireFrom.AddReward(-0.5f);
                }
                DestroyProyectile();
            }
            else if (collision.gameObject.CompareTag("Ground"))
            {
                DestroyProyectile();
            }
        }
        //else if (collision.gameObject.tag == "Finish")
        //{ //This is to detect if the proyectile collides with the world, i used this tag because it is standard in Unity (To prevent asset importing issues)
        //    DestroyProyectile();
        //}
    }
Ejemplo n.º 7
0
    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("goal"))
        {
            if (collision.gameObject.name == "Goal1")
            {
                if (lastAgentHit == 0)
                {
                    agentA.AddReward(-0.01f);
                    agentB.SetReward(0);
                    agentB.score += 1;
                    Debug.Log("Score Incremented");
                }
                else
                {
                    agentA.SetReward(0);
                    agentB.AddReward(-0.01f);
                    agentA.score += 1;
                    Debug.Log("Score Incremented");
                }
            }
            else if (collision.gameObject.name == "Goal2")
            {
                if (lastAgentHit == 0)
                {
                    agentA.AddReward(-0.01f);
                    agentB.SetReward(0);
                    agentB.score += 1;
                    Debug.Log("Score Incremented");
                }
                else
                {
                    agentA.SetReward(0);
                    agentB.AddReward(-0.01f);
                    agentA.score += 1;
                    Debug.Log("Score Incremented");
                }
            }


            agentA.Done();
            agentB.Done();
            region.MatchReset();
            Debug.Log(agentA.score);
        }

        if (collision.gameObject.CompareTag("Player"))
        {
            lastAgentHit = collision.gameObject.name == "Player1" ? 0 : 1;
        }
    }
 public void AddScore(int newScoreValue)
 {
     score += newScoreValue;
     // Added: Set reward for player agent
     playerAgent.AddReward(newScoreValue);
     UpdateScore();
 }
Ejemplo n.º 9
0
    private void ProcessHit(DamageDealer damageDealer)
    {
        if (damageDealer.CompareTag("Enemy"))
        {
            return;
        }

        if (damageDealer.CompareTag("EnemyShot"))
        {
            return;
        }

        meshRenderer.material = flashMaterial;

        gameController.AddToScore(scoreValue);
        health -= damageDealer.GetDamage();
        agent.AddReward(0.01f);
        damageDealer.Hit();
        if (health <= 0)
        {
            Die();
        }

        else
        {
            Invoke("ResetMaterial", .1f);
        }
    }
    public void DistanceReward(Arena arena)
    {
        PlayerAgent first  = arena.Players[0].PlayerAgent;
        PlayerAgent second = arena.Players[1].PlayerAgent;

        float distance = Vector3.Distance(first.transform.position, second.transform.position);

        if (distance < 3.5f)
        {
            first.AddReward(-InRangeReward * 2f);
            second.AddReward(-InRangeReward * 2f);
        }
        else if (distance < 5.5f)
        {
            first.AddReward(InRangeReward);
            second.AddReward(InRangeReward);
        }
        else
        {
            first.AddReward(-InRangeReward);
            second.AddReward(-InRangeReward);
        }
    }
Ejemplo n.º 11
0
    private void OnTriggerEnter2D(Collider2D col)
    {
        var hit = col.gameObject;



        if (hit.tag == "tree")
        {
            Destroy(gameObject);
            return;
        }

        if (hit.tag == "player")
        {
            PlayerAgent health = hit.GetComponent <PlayerAgent>();
            health.TakeDamage(7);
            Destroy(gameObject);
            shooter.AddReward(10);
        }

        return;
    }
 public void AddRewardUpdate(PlayerAgent player)
 {
     player.AddReward(UpdateReward);
 }
Ejemplo n.º 13
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (reloading && Time.time > lastReloadTime + reloadTime[(int)currentWeapon])
        {
            ammo      = maxAmmo[(int)currentWeapon];
            reloading = false;
        }

        if (health <= 0)
        {
            battleArea.addAliveTimeStat(gameObject.name, aliveTime);
            if (battleArea.kdStatText)
            {
                if (gameObject.name.StartsWith("MLAgent"))
                {
                    battleArea.kdStatText.GetComponent <StatsCounter>().addMLSurviveTime(aliveTime);
                }
                else if (gameObject.name.StartsWith("MLDisAgent"))
                {
                    battleArea.kdStatText.GetComponent <StatsCounter>().addMLDisSurviveTime(aliveTime);
                }
                else if (gameObject.name.StartsWith("RBSAgent"))
                {
                    battleArea.kdStatText.GetComponent <StatsCounter>().addRBSSurviveTime(aliveTime);
                }
                else if (gameObject.name.StartsWith("Human"))
                {
                    battleArea.kdStatText.GetComponent <StatsCounter>().addHumanSurviveTime(aliveTime);
                }
            }

            if (agent.brain)
            {
                agent.AddReward(-1f);
                agent.Done();
                //gameObject.SetActive(false);
            }
            else
            {
                if (destroyOnDied)
                {
                    battleArea.players.Remove(gameObject);
                    Destroy(statusBar);
                    Destroy(gameObject);
                }
            }
        }
        else
        {
            aliveTime += Time.deltaTime;
        }

        if (statusBar)
        {
            //uiText.GetComponent<Text>().text = "Health: " + health + "\nAmmo: " + ((reloading) ? "RE.." : ammo.ToString()) + "\n" + agent.GetReward().ToString("0.000");
            statusBar.GetComponent <StatusBar>().updateBar(health, ammo, maxAmmo[(int)currentWeapon], reloading);
            // Offset position above object bbox (in world space)
            float offsetPosX = transform.position.x + 0.75f;

            // Final position of marker above GO in world space
            Vector3 offsetPos = new Vector3(offsetPosX, transform.position.y, transform.position.z);

            // Calculate *screen* position (note, not a canvas/recttransform position)
            Vector2 canvasPos;
            Vector2 screenPoint = Camera.main.WorldToScreenPoint(offsetPos);

            // Convert screen position to Canvas / RectTransform space <- leave camera null if Screen Space Overlay
            RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out canvasPos);

            // Set
            statusBar.transform.localPosition = canvasPos;
        }
    }