Exemplo n.º 1
0
    public void SpawnBot(int botNum)
    {
        bots = new BotCharacter[botNum];
        Vector3 position;

        for (int i = 0; i < botNum; i++)
        {
            position = transform.position;
            BotCharacter bot = Instantiate <BotCharacter>(botPrefab);
            bots[i] = bot;

            // 根据怪物数决定分散范围,并限定在GroupBox内

            Vector3 splat_range;
            //根据怪物数量,计算怪物在X,Z轴上的分布范围
            splat_range.x = bot.bounds.size.x * (float)(botNum - 1);
            splat_range.z = bot.bounds.size.z * (float)(botNum - 1);

            //splat_range最大,不能超过怪物组包围盒范围的一半
            var collider = GetComponent <Collider>();
            splat_range.x = Mathf.Min(splat_range.x, collider.bounds.extents.x);
            splat_range.z = Mathf.Min(splat_range.z, collider.bounds.extents.z);

            position.x += Random.Range(-splat_range.x, splat_range.x);
            position.z += Random.Range(0f, splat_range.z); //z轴,让怪物集中分布在包围盒的前方
            position.y  = 0;

            bots[i].transform.position = position;
            bots[i].transform.parent   = transform;

            bots[i].waveAmplitude = (i + 1) * 0.1f;
            //45度单位偏移
            bots[i].waveRadianOffset = (i + 1) * Mathf.PI / 4.0f;
        }
    }
        public static SaveGameCore RepairAllBots(this SaveGameCore input)
        {
            SaveGameCore saveGame = input;

            foreach (BaseCharacter character in saveGame.Characters.Where(x => x.CharacterType == CharacterType.Bot))
            {
                BotCharacter botCharacter = (BotCharacter)character;
                botCharacter.State.Value     = 1;
                botCharacter.Condition.Value = 1;
                botCharacter.Integrity.Value = 1;
            }

            return(saveGame);
        }
Exemplo n.º 3
0
    void Start()
    {
        bot = new BotCharacter();
        bot.SetAnimator(GetComponent <Animator>());
        bot.Set2DRigidbody(GetComponent <Rigidbody2D>());
        bot.SetTransform(GetComponent <Transform>());
        bot.SetTarget(target);
        bot.SetInput(new CustomInput());

        botFSM = new FSM(bot);
        botFSM.AddState(new PlayerIdleState());
        botFSM.AddState(new PlayerWalkState());
        botFSM.AddState(new PlayerRunState());
        botFSM.Start();
    }
Exemplo n.º 4
0
 void Init()
 {
     Enemy  = Instantiate(Enemy, Holder1);
     Player = Instantiate(Game.Character as HumanCharacter, Holder2);
 }