示例#1
0
    public void DirectAttack()
    {
        if (m_MyBox.tag == "PlayerU" && Input.GetMouseButtonDown(1))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitinfo;

            if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("enemyunit")))//타겟 선택 공격
            {
                m_enemy = hitinfo.collider.gameObject.GetComponent <UnitBox>();

                m_fDists = Vector3.Distance(m_MyBox.transform.position, m_enemy.transform.position);
                if (m_fDists <= m_MyBox.m_sUnit.Range)
                {
                    m_MyBox.TargetPosition = m_MyBox.transform.position;
                    if (m_enemy != null)
                    {
                        m_enemy.m_sUnit.Hp = m_enemy.m_sUnit.Hp - m_sUnit.Damage;
                        m_enemy.ChangeHp(m_enemy.m_sUnit.Hp, m_enemy.m_sUnit.MaxHp);
                        //counttest++;
                        if (m_enemy.m_sUnit.Hp <= 0)
                        {
                            Destroy(m_enemy.gameObject);
                            m_enemy = null;
                        }
                    }
                }
                if (m_fDists > m_MyBox.m_sUnit.Range)
                {
                    m_MyBox.TargetPosition = m_enemy.transform.position;
                }
            }
        }
    }
示例#2
0
    //어택땅 키와 그냥 이동만 하는 키를 따로 만들어야한다.

    public void Attack()//유닛을 한번때리고 함수가 종료되는것이 아닌 죽일때까지 반복되는듯함
    {
        if (m_enemy != null)
        {
            if (m_UnitCommend == 1 && DetectCheck == 1)
            {
                m_enemy.m_sUnit.Hp = m_enemy.m_sUnit.Hp - m_sUnit.Damage;
                this.transform.LookAt(m_enemy.transform);
                if (this.CompareTag("PlayerU"))
                {
                    Instantiate(HitEffect, HitEffectpoint.transform.position, Quaternion.identity);
                    SoundManager.instance.PlaySound();
                }
                if (this.CompareTag("EnemyU"))
                {
                    animator.SetBool("Attacking", true);
                }
                Instantiate(ShootEffect, m_enemy.ShootEffectpoint.transform.position, Quaternion.identity);
                m_enemy.ChangeHp(m_enemy.m_sUnit.Hp, m_enemy.m_sUnit.MaxHp);
                if (m_enemy.m_sUnit.Hp <= 0)
                {
                    //Destroy(m_enemy.gameObject);
                    if (this.CompareTag("EnemyU"))
                    {
                        animator.SetBool("Attacking", false);
                    }
                    m_enemy = null;
                }
            }
        }
    }
示例#3
0
    public void Detect(/*UnitBox uBox*//*, UnitBox euBox*/)//유닛 탐지
    {
        //m_fDists = Vector3.Distance(uBox.transform.position, euBox.transform.position);
        if (m_MyBox != null)
        {
            Collider[] hitCollider = Physics.OverlapSphere(m_MyBox.transform.position, 6.0f /*, 1 << LayerMask.NameToLayer("enemyunit")*/); //탐지

            if (m_MyBox.tag == "PlayerU" && m_UnitCommend != 0)
            {
                foreach (Collider hit in hitCollider)
                {
                    if (hit.tag == "EnemyU")
                    {
                        //Debug.Log("탐지");
                        m_enemy  = hit.gameObject.GetComponent <UnitBox>(); //탐지 한 적개체를 타겟으로 지정
                        m_fDists = Vector3.Distance(m_MyBox.transform.position, m_enemy.transform.position);
                        if (m_fDists > m_MyBox.m_sUnit.Range)
                        {
                            m_MyBox.TargetPosition = m_enemy.transform.position; //적유닛의 위치로이동
                                                                                 //Debug.Log("too far");
                            DetectCheck = 0;
                        }
                        if (m_fDists <= m_MyBox.m_sUnit.Range)                   //사거리 안으로 이동시
                        {
                            m_MyBox.TargetPosition = m_MyBox.transform.position; //현재위치에 멈춤
                                                                                 //Attack();
                                                                                 //StartCoroutine("Attack");
                            DetectCheck = 1;
                        }
                    }
                }
            }
            //if (m_MyBox.tag == "EnemyU")
            //{
            //    foreach (Collider hit in hitCollider)
            //    {
            //        if (hit.tag == "PlayerU")
            //        {
            //            //Debug.Log("탐지");
            //            m_enemy = hit.gameObject.GetComponent<UnitBox>(); //탐지 한 적개체를 타겟으로 지정
            //            m_fDists = Vector3.Distance(m_MyBox.transform.position, m_enemy.transform.position);
            //            if (m_fDists > m_MyBox.m_sUnit.Range)
            //            {
            //                m_MyBox.TargetPosition = m_enemy.transform.position;//적유닛의 위치로이동
            //                                                                    //Debug.Log("too far");
            //                DetectCheck = 0;
            //            }
            //            if (m_fDists <= m_MyBox.m_sUnit.Range)//사거리 안으로 이동시
            //            {
            //                m_MyBox.TargetPosition = m_MyBox.transform.position;//현재위치에 멈춤
            //                                                                    //Attack();
            //                                                                    //StartCoroutine("Attack");
            //                DetectCheck = 1;
            //            }
            //        }
            //    }
            //}
        }
    }
 private void button2_Click_1(object sender, EventArgs e)
 {
     BarcodeBox.Clear();
     ItemDescriptionBox.Clear();
     UnitBox.Clear();
     QuantityBox.Clear();
     UnitPriceBox.Clear();
     RetailPriceBox.Clear();
 }
示例#5
0
    public void MultiUnitaction()
    {
        if (Input.GetMouseButtonDown(0) /*&&Input.GetKey(KeyCode.LeftShift)*/)
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitinfo;

            if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("playerunit")))
            {
                Target = hitinfo.collider.gameObject.GetComponent <UnitBox>();
                m_cTargetlist.Add(Target);
                //Targetcmd = hitinfo.collider.gameObject.GetComponent<UnitBox>();
                //m_cTargetcmdlist.Add(Targetcmd);
            }
            else
            {
                m_cTargetlist.Clear();
                //Target = null;
                //m_cTargetcmdlist.Clear();
            }
        }
        if (Target != null)
        {
            if (Input.GetMouseButtonDown(1))
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hitinfo;

                if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("enemyunit")))
                {
                    Targetenemy = hitinfo.collider.gameObject.GetComponent <UnitBox>();
                    m_fDist     = Vector3.Distance(Target.TargetPosition, Targetenemy.TargetPosition);
                    if (m_fDist < Target.m_sUnit.Range)
                    {
                        Debug.Log("Detect Enemy");
                        //Target.m_sUnit.Attack(Targetenemy.m_sUnit);
                        Targetenemy.m_sUnit.Hp = Targetenemy.m_sUnit.Hp - Target.m_sUnit.Damage;//임시 공격
                        Debug.Log(Targetenemy.m_sUnit.Hp);
                    }
                }//문제점1 적을 찍어도 적 밑의 지형도 같이 찍히면서 타켓의 포지션이 적의 포지션 근처로
                 //바뀌면서 적과의 거리가 무조건 지근거리로 나오게된다.
                 //이것을 이너미유닛과 디폴트의 위치를 바꿔주는것만으로도 해결

                if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("Default")))
                {
                    Positon = hitinfo.point;
                }
                for (int i = 0; i < m_cTargetlist.Count; i++)
                {
                    m_cTargetlist[i].TargetPosition = Positon;
                }
                //Target.TargetPosition = Positon;
            }
        }
    }
示例#6
0
    public void Create()
    {
        gameObject.SetActive(true);
        List <Unit> army = GameData.instance.data.army;

        unitBoxes = new List <UnitBox>();
        for (int i = 0; i < army.Count; i++)
        {
            UnitBox box = Instantiate(unitBoxPrefab, unitContainer.transform);
            box.SetUnit(army[i], i, !unitManager.fallenUnits.Contains(i));
            box.graveyard = this;
            unitBoxes.Add(box);
        }
        Undo();
    }
示例#7
0
    //어택땅 키와 그냥 이동만 하는 키를 따로 만들어야한다.

    public void Attack()//유닛을 한번때리고 함수가 종료되는것이 아닌 죽일때까지 반복되는듯함
    {
        if (m_enemy != null)
        {
            if (m_UnitCommend == 1 && DetectCheck == 1)
            {
                m_enemy.m_sUnit.Hp = m_enemy.m_sUnit.Hp - m_sUnit.Damage;
                m_enemy.ChangeHp(m_enemy.m_sUnit.Hp, m_enemy.m_sUnit.MaxHp);
                if (m_enemy.m_sUnit.Hp <= 0)
                {
                    //Destroy(m_enemy.gameObject);
                    m_enemy = null;
                }
            }
        }
    }
示例#8
0
 public void UnitSelect()
 {
     if (m_MyBox.tag == "PlayerU" && Input.GetMouseButtonDown(0))
     {
         Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hitinfo;
         if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("playerunit")))
         {
             m_MyBox             = hitinfo.collider.gameObject.GetComponent <UnitBox>();
             m_MyBox.SelectCheck = 1;
             Debug.Log(SelectCheck);
         }
         else if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("Default")))
         {
             SelectCheck = 0;
             Debug.Log(SelectCheck);
         }
     }
 }
示例#9
0
    public void DirectAttack()
    {
        if (this.tag == "PlayerU" && Input.GetMouseButtonDown(1))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitinfo;

            if (Physics.Raycast(ray, out hitinfo, 100.0f, 1 << LayerMask.NameToLayer("enemyunit")))//타겟 선택 공격
            {
                m_enemy = hitinfo.collider.gameObject.GetComponent <UnitBox>();

                m_fDists = Vector3.Distance(this.transform.position, m_enemy.transform.position);
                if (m_fDists <= this.m_sUnit.Range)
                {
                    this.TargetPosition = this.transform.position;
                    this.m_UnitCommend  = 1;
                }
                if (m_fDists > this.m_sUnit.Range)
                {
                    this.TargetPosition = m_enemy.transform.position;
                }
            }
        }
    }
示例#10
0
    public void Detect(/*UnitBox uBox*//*, UnitBox euBox*/)//유닛 탐지
    {
        if (this != null)
        {
            Collider[] hitCollider = Physics.OverlapSphere(this.transform.position, 6.0f); //탐지

            if (this.tag == "PlayerU" && m_UnitCommend != 0)
            {
                foreach (Collider hit in hitCollider)
                {
                    if (hit.tag == "EnemyU")
                    {
                        if (hit.gameObject.GetComponent <UnitBox>().m_sUnit.Hp >= 0)
                        {
                            m_enemy  = hit.gameObject.GetComponent <UnitBox>(); //탐지 한 적개체를 타겟으로 지정
                            m_fDists = Vector3.Distance(this.transform.position, m_enemy.transform.position);
                            if (m_fDists > this.m_sUnit.Range)
                            {
                                this.TargetPosition = m_enemy.transform.position;//적유닛의 위치로이동
                                DetectCheck         = 0;
                            }
                            if (m_fDists <= this.m_sUnit.Range + 0.2)          //사거리 안으로 이동시
                            {
                                this.TargetPosition = this.transform.position; //현재위치에 멈춤
                                DetectCheck         = 1;
                            }
                        }
                    }
                }
            }

            //Collider[] hitZombieCollider = Physics.OverlapSphere(this.transform.position, 100.0f);
            if (this.tag == "EnemyU")
            {
                foreach (Collider hit in hitCollider)
                {
                    if (hit.tag == "PlayerU")
                    {
                        //Debug.Log("탐지");
                        m_enemy  = hit.gameObject.GetComponent <UnitBox>(); //탐지 한 적개체를 타겟으로 지정
                        m_fDists = Vector3.Distance(this.transform.position, m_enemy.transform.position);
                        if (m_fDists > this.m_sUnit.Range)
                        {
                            this.TargetPosition = m_enemy.transform.position; //적유닛의 위치로이동
                                                                              //Debug.Log("too far");
                            animator.SetBool("walking", true);
                            animator.SetBool("Attacking", false);
                            DetectCheck = 0;
                        }
                        if (m_fDists <= this.m_sUnit.Range + 0.2)          //사거리 안으로 이동시
                        {
                            this.TargetPosition = this.transform.position; //현재위치에 멈춤
                                                                           //Attack();
                                                                           //StartCoroutine("Attack");
                            DetectCheck = 1;
                        }
                    }
                    else if (hit.tag == "PlayerB")
                    {
                        m_TargetofZombie = hit.gameObject.GetComponent <BuildingBox>();
                        m_fDists         = Vector3.Distance(this.transform.position, m_TargetofZombie.transform.position);
                        if (m_fDists > this.m_sUnit.Range)
                        {
                            this.TargetPosition = m_TargetofZombie.transform.position;
                            animator.SetBool("walking", true);
                            animator.SetBool("Attacking", false);
                        }
                        if (m_fDists <= this.m_sUnit.Range + 1)
                        {
                            this.TargetPosition = this.transform.position;
                            DetectCheck         = 2;
                        }
                    }
                    if (hit.tag == "Center")
                    {
                        m_enemys_target = hit.gameObject.GetComponent <Center>();
                        m_fDists        = Vector3.Distance(this.transform.position, m_enemys_target.transform.position);
                        if (m_fDists > this.m_sUnit.Range)
                        {
                            this.TargetPosition = m_enemys_target.transform.position;
                            animator.SetBool("walking", true);
                            animator.SetBool("Attacking", false);
                            //ZombieDeCheck = 0;
                        }
                        if (m_fDists <= this.m_sUnit.Range + 2)
                        {
                            this.TargetPosition = this.transform.position;
                            //ZombieDeCheck = 1;
                            DetectCheck = 3;
                        }
                    }
                }
            }
        }
    }