Esempio n. 1
0
    public static Enemy Create(Transform spawnPoint, WaveAttack attackParams)
    {
        Enemy enemy = Create(spawnPoint);

        enemy.Attack      = attackParams.Params;
        enemy.MovingSpeed = attackParams.Speed;

        return(enemy);
    }
Esempio n. 2
0
        private void OnScene(SceneView sceneview)
        {
            var mission = target as WaveDefenceMission;


            if (InEditingSceneObject)
            {
                //Wave 设置
                for (int i = 0; i < mission.waves.Length; i++)
                {
                    WaveAttack wave = mission.waves[i];

                    //选择当前编辑的Wave
                    Handles.BeginGUI();

                    if (GUILayout.Button(string.Format("Wave:{0}", i)))
                    {
                        currentEditingWave = i;
                    }

                    Handles.EndGUI();

                    //不是当前选择的波数
                    if (currentEditingWave != i)
                    {
                        continue;
                    }

                    //显示波数的启动位置与编辑箭头
                    for (int j = 0; j < wave.waveList.Length; j++)
                    {
                        WaveAttackInfo t = wave.waveList[j];

                        for (int k = 0; k < t.posList.Count; k++)
                        {
                            Vector3    pos = t.posList[k];
                            Quaternion rot = t.rotList[k];

                            pos = Handles.PositionHandle(pos, rot);
                            rot = Handles.RotationHandle(rot, pos);

                            mission.waves[i].waveList[j].posList[k] = pos;
                            mission.waves[i].waveList[j].rotList[k] = rot;

                            Handles.Label(pos, string.Format("Vehicle :{0} Pos:{1}", t.vehicleName, pos));
                            Handles.DrawWireCube(pos, new Vector3(4, 2, 4));
                        }
                    }
                }

                //玩家设置
                mission.startPoint    = Handles.PositionHandle(mission.startPoint, mission.startRotation);
                mission.startRotation = Handles.RotationHandle(mission.startRotation, mission.startPoint);
                Handles.DrawWireCube(mission.startPoint, new Vector3(4, 2, 4));
            }
        }
Esempio n. 3
0
 // Use this for initialization
 void Start()
 {
     attacker = GameObject.FindGameObjectWithTag("Player").GetComponent <WaveAttack>();
 }
Esempio n. 4
0
    public override void OnInspectorGUI()
    {
        _target.PauseTime = EditorGUILayout.Slider("Pause between waves", _target.PauseTime, 1, 60);

        EditorGUILayout.LabelField("Waves", EditorStyles.boldLabel);
        for (int i = 0; i < _target.Waves.Count; i++)
        {
            if (_showMonster.Count - 1 < i)
            {
                _showMonster.Add(true);
                _showWave.Add(true);
            }
            _showWave[i] = EditorGUILayout.Foldout(_showWave[i], "Wave " + i);

            if (!_showWave[i])
            {
                continue;
            }
            EditorGUI.indentLevel++;

            WaveClass wave = _target.Waves[i];
            wave.SpawnPoint = EditorGUILayout.ObjectField("SpawnPoint", wave.SpawnPoint, typeof(Transform), true) as Transform;
            wave.BornTime   = EditorGUILayout.Slider("Born time(s)", wave.BornTime, 0, 5);

            _showMonster[i] = EditorGUILayout.Foldout(_showMonster[i], "Monsters");
            if (_showMonster[i])
            {
                EditorGUI.indentLevel++;
                for (int j = 0; j < wave.Monsters.Count; j++)
                {
                    EditorGUILayout.LabelField("Monster " + j, EditorStyles.boldLabel);
                    EditorGUI.indentLevel++;
                    WaveAttack monster = wave.Monsters[j];

                    monster.SpawnCount = EditorGUILayout.IntSlider("Spawn count", monster.SpawnCount, 1, 50);
                    monster.Hitpoints  = EditorGUILayout.FloatField("Hitpoints", monster.Hitpoints);
                    monster.Speed      = EditorGUILayout.FloatField("Monsters speed", monster.Speed);

                    monster.Params.AttackRange  = EditorGUILayout.FloatField("Attack range", monster.Params.AttackRange);
                    monster.Params.AttackDamage = EditorGUILayout.FloatField("Attack damage", monster.Params.AttackDamage);
                    monster.Params.AttackSpeed  = EditorGUILayout.FloatField("Attack speed", monster.Params.AttackSpeed);

                    EditorGUI.indentLevel--;
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Remove monster", GUILayout.Width(120)))
                    {
                        wave.Monsters.Remove(monster);
                    }
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.TextArea("", GUI.skin.horizontalSlider);
                }

                EditorGUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Add monster", GUILayout.Width(140)))
                {
                    wave.Monsters.Add(new WaveAttack());
                }
                EditorGUILayout.EndHorizontal();

                EditorGUI.indentLevel--;
            }
            EditorGUI.indentLevel--;
            EditorGUILayout.TextArea("", GUI.skin.horizontalSlider);

            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Remove wave", GUILayout.Width(170)))
            {
                _target.Waves.Remove(wave);
            }
            EditorGUILayout.EndHorizontal();
        }

        EditorGUILayout.BeginHorizontal();
        AddWave();
        EditorGUILayout.EndHorizontal();

        //Save data
        EditorUtility.SetDirty(_target);
    }