예제 #1
0
 void OnCollisionEnter2D(Collision2D col)
 {
     if (col.gameObject.layer == LayerMask.NameToLayer("Enemy"))
     {
         healthHandler.takeDamage(0.5f);
         Debug.Log(StaticPlayer.getHealth());
     }
 }
    private void HandleCombatStateBehavior()
    {
        switch (combatState)
        {
        case CombatEnum.ATTACK:

            mainPlayerHealthHandler.takeDamage(damagePerAttack);

            break;

        case CombatEnum.FLEE:
            break;

        case CombatEnum.FREEZE:
            targetPosition = null;
            break;

        case CombatEnum.PURSUE:
            fov.viewAngle  = chaseViewAngle;
            targetPosition = mainPlayerPosition;



            break;

        case CombatEnum.SNEAK:
            //Sneak logic here
            fov.viewAngle = sneakViewAngle;
            if (teleportCharged)
            {
                bool shouldTeleport = false;
                targetPosition = null;
                do
                {
                    teleportPosition = mainPlayerPosition.position - (getRandomVector() * teleportDistance);

                    float   dstToTarget = Vector3.Distance(teleportPosition, mainPlayerPosition.position);
                    Vector3 dirToTarget = (teleportPosition - mainPlayerPosition.position).normalized;



                    if (!Physics2D.Raycast(mainPlayerPosition.position, dirToTarget, dstToTarget, obstacleMask))
                    {
                        print(Vector3.Distance(teleportPosition, mainPlayerPosition.position));

                        shouldTeleport = true;
                    }
                } while (!shouldTeleport);


                this.transform.position = teleportPosition;
                teleportCharged         = false;
            }

            //if (mainPlayerPosition.)
            //this.transform.position =



            break;

        default:
            break;
        }
    }