Roman c9a4456308 任务:推进游戏的流程化
场景:【序章-家中】
1.创建游戏物体【多态管理员】
*:修改脚本文件夹名称至中文
*:修复若干Bug
2.创建脚本【PolymorphicAdministrator】
3.编写【PolymorphicAdministrator】的基本逻辑
4.为数值记录者添加变量【stageName】,用来识作为多态的识别标志
5.完成了多态系统,现在同一个场景可以根据目前的【演出名】进行不同的初始化以节省空间。

后续的流程化明天继续开发,下班
加油吧🙏
2021-08-11 02:17:57 +08:00

75 lines
2.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BombingArea : MonoBehaviour
{
//这是轰炸区的脚本,控制轰炸区相关的所有逻辑💣
// Start is called before the first frame update
private bool bombing = false;//是否正在轰炸
public GameObject shell;//炮弹游戏物体
// [Tooltip("炮弹阴影Y轴的偏移量")]
// public float shellShadowYOffset;//炮弹阴影Y轴的偏移量因为复杂原因必须使用此变量调整阴影的Y位置
private float minimumTimeInterval;
private float maximumTimeInterval;//生成炮弹的最小和最大时间间隔
private float maxOffSetOfShell;//生成炮弹离玩家的最大偏移量
private float leftTime = 0f;
private IndexRecoder indexRecoder;
private M_Player player;
private float shellHeight;
void Start()
{
Init();
}
// Update is called once per frame
void Update()
{
if(bombing) Bomb();
}
private void Init()
{
indexRecoder = FindObjectOfType<IndexRecoder>();
minimumTimeInterval = indexRecoder.bombingAreaMinimumTimeInterval;
maximumTimeInterval = indexRecoder.bombingAreaMaximumTimeInterval;
maxOffSetOfShell = indexRecoder.bombingAreaMaxOffSetOfShell;
shellHeight = indexRecoder.bombingAreaShellHeight;
player = FindObjectOfType<M_Player>();
}
private void Bomb()
{
if(leftTime <= 0f)
{
Instantiate(shell,//生成炮弹
player.transform.position + //以玩家位置
new Vector3(Random.Range(-maxOffSetOfShell,maxOffSetOfShell),//加上水平方向的偏移量
shellHeight,0),//竖直方向给高度
Quaternion.identity);
leftTime = Random.Range(minimumTimeInterval,maximumTimeInterval);
}
else leftTime -= Time.deltaTime;
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")//当玩家进入轰炸区
{
bombing = true;
}
}
void OnTriggerExit2D(Collider2D other)
{
if(other.tag == "Player")//当玩家退出轰炸区
{
bombing = false;
}
}
}