Esempio n. 1
0
    void akShoot()
    {
        muzzleFlash.Play();

        currentAmmo--;

        RaycastHit akHitInfo;

        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out akHitInfo, akRange))
        {
            Debug.Log(akHitInfo.transform.name);

            SoldierAI enemy = akHitInfo.transform.GetComponent <SoldierAI>();
            if (enemy != null)
            {
                enemy.health = 0;
            }

            if (akHitInfo.rigidbody != null)
            {
                akHitInfo.rigidbody.AddForce(-akHitInfo.normal * impactForce);
            }

            GameObject impactPS = Instantiate(impactEffect, akHitInfo.point, Quaternion.LookRotation(akHitInfo.normal));
            Destroy(impactPS, 1f);
        }
    }
        // 訓練Rookie單位
        public ISoldier TrainRookie(ENUM_Weapon emWeapon, int Lv)
        {
            // 產生物件
            SoldierRookie theSoldier = new SoldierRookie();

            // 設定模型
            GameObject tmpGameObject = CreateGameObject("RookieGameObjectName");

            tmpGameObject.gameObject.name = "SoldierRookie";
            theSoldier.SetGameObject(tmpGameObject);

            // 加入武器
            IWeapon Weapon = CreateWeapon(emWeapon);

            theSoldier.SetWeapon(Weapon);

            // 取得Soldier的數值,設定給角色
            SoldierAttr theSoldierAttr = CreateSoliderAttr(1);

            theSoldierAttr.SetSoldierLv(Lv);
            theSoldier.SetCharacterAttr(theSoldierAttr);

            // 加入AI
            SoldierAI theAI = CreateSoldierAI();

            theSoldier.SetAI(theAI);

            // 加入管理器
            //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier );

            return(theSoldier as ISoldier);
        }
        // 加入角色AI
        public override void AddAI(ICharacter pRole)
        {
            // 加入AI
            SoldierAI theAI = CreateSoldierAI();

            pRole.SetAI(theAI);
        }
Esempio n. 4
0
        public Soldier(Vector2 spawnPosition, Texture2D texture, List <Entity> obstacles, int team) : base(spawnPosition, texture, obstacles, team)
        {
            soldierAI = new SoldierAI();
            AIMouseInput         aiMouse = new AIMouseInput();
            HeroAnimationHandler animationHandler;

            soldierAI.Team = team;
            if (soldierAI.Team == 1)
            {
                animationHandler            = new HeroAnimationHandler(Textures.heroTexture);
                animationHandler.animations = CreateHeroAnimations();
            }
            else
            {
                animationHandler            = new HeroAnimationHandler(Textures.EnemyTexture);
                animationHandler.animations = CreateEnemyAnimations();
            }
            Scale = 1f;
            animationHandler.Mouse = aiMouse;
            _AnimationHandler      = animationHandler;
            Health                     = 10;
            MaxHealth                  = 10;
            soldierAI.Soldier          = this;
            soldierAI.SoldierHealth    = this;
            ((AIInput)Input).soldierAI = soldierAI;
            ((AIMouseInput)animationHandler.Mouse).soldierAI = soldierAI;
            Weapon       = new Weapon(this, aiMouse);
            Weapon.Mouse = animationHandler.Mouse;
            soldierAI.RandomPlatform();
        }
Esempio n. 5
0
        // 训练Caption单位
        public ISoldier TrainCaption(ENUM_Weapon emWeapon, int Lv)
        {
            // 产生物件
            SoldierCaptain theSoldier = new SoldierCaptain();

            // 设定模型
            GameObject tmpGameObject = CreateGameObject("CaptainGameObjectName");

            tmpGameObject.gameObject.name = "SoldierCaptain";
            theSoldier.SetGameObject(tmpGameObject);

            // 加入武器
            IWeapon Weapon = CreateWeapon(emWeapon);

            theSoldier.SetWeapon(Weapon);

            // 取得Soldier的数值,设定给角色
            SoldierAttr theSoldierAttr = CreateSoliderAttr(3);

            theSoldierAttr.SetSoldierLv(Lv);
            theSoldier.SetCharacterAttr(theSoldierAttr);

            // 加入AI
            SoldierAI theAI = CreateSoldierAI();

            theSoldier.SetAI(theAI);

            // 加入管理器
            //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier );

            return(theSoldier as ISoldier);
        }
Esempio n. 6
0
 void Awake()
 {
     teamMat = Random.Range(0, 10);
     GetComponent <TeamMember>().matIndex = teamMat;
     rb            = GetComponent <Rigidbody>();
     ai            = GetComponent <SoldierAI>();
     playerManager = GameObject.Find("Player Manager").GetComponent <Players>();
     killfeed      = GameObject.Find("Killfeed").GetComponent <Killfeed>();
 }
Esempio n. 7
0
    public override void setAI()
    {
        m_soldierBuildParam.character.getGameObject().AddComponent <Seeker>();
        m_soldierBuildParam.character.getGameObject().AddComponent <SimpleSmoothModifier>();

        SoldierAI soldierAI = new SoldierAI(m_soldierBuildParam.character);

        //soldierAI.setTarget(m_soldierBuildParam.target);
        soldierAI.init();
        m_soldierBuildParam.character.AI = soldierAI;
    }
Esempio n. 8
0
    void RifleShoot()
    {
        RaycastHit rifleHitInfo;

        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out rifleHitInfo, rifleRange))
        {
            SoldierAI enemy = rifleHitInfo.transform.GetComponent <SoldierAI>();
            if (enemy != null)
            {
                enemy.health = 0;
            }

            if (rifleHitInfo.rigidbody != null)
            {
                rifleHitInfo.rigidbody.AddForce(-rifleHitInfo.normal * impactForce);
            }
        }
    }
	// 
	public SoldierCaptive( IEnemy theEnemy)
	{
		m_emSoldier = ENUM_Soldier.Captive;
		m_Captive = theEnemy;

		// 設定成像
		SetGameObject( theEnemy.GetGameObject() );

		// 將Enemy數值轉成Soldier用的
		SoldierAttr tempAttr = new SoldierAttr();
		tempAttr.SetSoldierAttr( theEnemy.GetCharacterAttr().GetBaseAttr() );
		tempAttr.SetAttStrategy( theEnemy.GetCharacterAttr().GetAttStrategy());
		tempAttr.SetSoldierLv( 1 );	// 設定為1級
		SetCharacterAttr( tempAttr );

		// 設定武器
		SetWeapon( theEnemy.GetWeapon() );

		// 更改為SoldierAI
		m_AI = new SoldierAI( this );
		m_AI.ChangeAIState( new IdleAIState() );
	}
Esempio n. 10
0
    //
    public SoldierCaptive(IEnemy theEnemy)
    {
        m_emSoldier = ENUM_Soldier.Captive;
        m_Captive   = theEnemy;

        // 設定成像
        SetGameObject(theEnemy.GetGameObject());

        // 將Enemy數值轉成Soldier用的
        SoldierAttr tempAttr = new SoldierAttr();

        tempAttr.SetSoldierAttr(theEnemy.GetCharacterAttr().GetBaseAttr());
        tempAttr.SetAttStrategy(theEnemy.GetCharacterAttr().GetAttStrategy());
        tempAttr.SetSoldierLv(1);               // 設定為1級
        SetCharacterAttr(tempAttr);

        // 設定武器
        SetWeapon(theEnemy.GetWeapon());

        // 更改為SoldierAI
        m_AI = new SoldierAI(this);
        m_AI.ChangeAIState(new IdleAIState());
    }
	// 加入AI(Soldier)
	public override void AddAI()
	{
		SoldierAI theAI = new SoldierAI( m_BuildParam.NewCharacter );
		m_BuildParam.NewCharacter.SetAI( theAI );
	}
Esempio n. 12
0
    // 加入AI
    public override void AddAI()
    {
        SoldierAI theAI = new SoldierAI(m_BuildParam.NewCharacter);

        m_BuildParam.NewCharacter.SetAI(theAI);
    }
 public void SetAI(SoldierAI theAI)
 {
 }
Esempio n. 14
0
    /// <summary>
    /// Messy debug method to create a mock solder from thin air. Will never be called in the real game; soldiers would be placed
    /// According to the metagame progression.
    /// </summary>
    private void CreateAndPlaceTestSoldier(int x, int y, Owner owner, string name, float hueShift, float talentLevel, int job, SoldierAI ai)
    {
        Soldier test     = GameObject.Instantiate <Soldier>(soldierPrefab);
        float   talent   = .1f;
        string  charName = "";

        switch (talentLevel)
        {
        case 0:
            talent   = 1.201f;
            charName = "Colleen Hunter";
            break;

        case 1:
            talent   = 1.158f;
            charName = "Kiriko Nekoyama";
            break;

        case 2:
            talent   = 1.121f;
            charName = "Rose Diamond";
            break;

        case 3:
            talent   = 1.094f;
            charName = "Vicki Tonkinese";
            break;

        case 4:
            talent   = 1.073f;
            charName = "Misty Aurata";
            break;

        case 5:
            talent   = 1.053f;
            charName = "Heather Iberia";
            break;

        case 6:
            talent   = 1.035f;
            charName = "Morrigan Kella";
            break;

        case 7:
            talent   = 1.017f;
            charName = "Joanna Lynx";
            break;

        case 8:
            talent   = 1.00f;
            charName = "Chamomile Tigon";
            break;
        }
        test.Init(ai, new Vector2Int(x, y), new SoldierStats(ClassDatabase.Instance.classes[job], talent, charName), owner, manager);
        test.InitGraphics(hueShift);
        test.name = name;
        manager.AddSoldierToBattle(test);
    }
Esempio n. 15
0
    public override void AddAI()
    {
        SoldierAI theAI = new SoldierAI(m_buildParam.NewBuding);

        m_buildParam.NewBuding.SetAI(theAI);
    }
		public void SetAI(SoldierAI theAI ){}