public static Enemy Create(Transform spawnPoint, WaveAttack attackParams) { Enemy enemy = Create(spawnPoint); enemy.Attack = attackParams.Params; enemy.MovingSpeed = attackParams.Speed; return(enemy); }
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)); } }
// Use this for initialization void Start() { attacker = GameObject.FindGameObjectWithTag("Player").GetComponent <WaveAttack>(); }
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); }