Roman fef70b82dd 任务:搭建第一关的框架
*:置入做好的MP4CG
场景【第一关】
1.布置了投掷物堆
2.使玩家掉入坑中的时候视角向右拉一些
3.使玩家离开坑的时候视角恢复
4.创造碉堡类敌人
关于碉堡
(1.有一个监视区,当玩家在监视区内,才会间断性扫射
(2.有若干射击区,只有射击区会有伤害判定
(3.可控节奏的循环射击
(4.为方便调试,当未监测到玩家,射击区显示白色,当监测到玩家但未在射击状态,显示黄色,当监测到玩家并且在射击,显示红色
5.在第一关布置了碉堡
6.适配好了碉堡的射击区
7.布置了电报机

至此,第一关的搭建已经完成

只剩7天了,要做的还有很多很多,加油吧…………🙏
2021-08-20 01:24:11 +08:00

93 lines
3.0 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
using UnityEngine.UI;
using UnityEditor;
using UnityEngine.Video;
public class CGAdministrator : MonoBehaviour
{
// Start is called before the first frame update
//CG管理员相关代码
private RawImage rawImage;
[Tooltip("记录这个场景中的所有CG要加的话直接扩容数组并往新的CG里面加内容")][SerializeField][ReadOnly]
private ACG[] CGs;
private IndexRecoder indexRecoder;
private ACG playingCG;//正在播放的CG因为invoke无法传参而存在
void Start()
{
rawImage = GetComponent<RawImage>();
indexRecoder = FindObjectOfType<IndexRecoder>();
rawImage.CrossFadeAlpha(0,0,true);//为了淡入显示必须先把它的阿尔法值降到0对吧
//好像可以让它自己找到所有CG
CGs = new ACG[transform.childCount];
for(int i = 0; i < transform.childCount; i++)
{
CGs[i] = transform.GetChild(i).GetComponent<ACG>();
}
//
//
//CallACG("暂用");
//
}
// Update is called once per frame
void Update()
{
}
//外部呼叫CG用传入你要调用的CG名
public void CallACG(string CGName)
{
//当外面叫了一个CG传入CG名
foreach(ACG CG in CGs)
{
//找到这个CG
if(CG.CGName.Equals(CGName))
{
Debug.Log("正在显示CG"+CG.name);
rawImage.texture = CG.texture;//把CG的内容装载上
rawImage.CrossFadeAlpha(1,indexRecoder.CGFadeTime,true);//淡入显示CG
playingCG = CG;
try
{
CG.GetComponent<VideoPlayer>().Play();//开始播放这个CG
}
catch(System.NullReferenceException)
{
Debug.Log("播放CG失败看看赋值对不对");
}
Invoke("StopIt",CG.time);
}
}
}
//改变标记使管理员意识到CG该停了
private void StopIt(){rawImage.CrossFadeAlpha(0f,indexRecoder.CGFadeTime,true);//淡出CG
playingCG.OnEnded();}//告诉这个CG它结束了然后触发它的结束事件
//制造一个只读的变量,不要动这些
public class ReadOnlyAttribute : PropertyAttribute{}
[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
public class ReadOnlyDrawer : PropertyDrawer
{
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
return EditorGUI.GetPropertyHeight(property, label, true);
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
GUI.enabled = false;
EditorGUI.PropertyField(position, property, label, true);
GUI.enabled = true;
}
}
//
}