diff options
author | chai <chaifix@163.com> | 2021-09-16 20:51:19 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-09-16 20:51:19 +0800 |
commit | cec37ddb003304a224b804a78479ae46dae58fed (patch) | |
tree | 03cb1ebba64cf6c38e9250816a7a4a4d13e36e38 /Assets/Scripts | |
parent | 8b65edb43be0945203633b33d7a62c81ab3f05ce (diff) |
+ motion blur
Diffstat (limited to 'Assets/Scripts')
23 files changed, 263 insertions, 22 deletions
diff --git a/Assets/Scripts/Curve3D.meta b/Assets/Scripts/Curve3D.meta new file mode 100644 index 00000000..fef1c5e7 --- /dev/null +++ b/Assets/Scripts/Curve3D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad8b718b6b700d8419838dad07158567 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Drone.meta b/Assets/Scripts/Drone.meta new file mode 100644 index 00000000..694cff70 --- /dev/null +++ b/Assets/Scripts/Drone.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec3412151f8a72a41b2ed21316763399 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Managers/SceneManager.cs b/Assets/Scripts/Managers/SceneManager.cs new file mode 100644 index 00000000..c986a1b1 --- /dev/null +++ b/Assets/Scripts/Managers/SceneManager.cs @@ -0,0 +1,15 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class SceneManager : Singleton<SceneManager>
+{
+
+ public Camera mainCamera { get; private set; }
+
+ public void SetMainCamera(Camera cam)
+ {
+ mainCamera = cam;
+ }
+
+}
diff --git a/Assets/Scripts/Managers/SceneManager.cs.meta b/Assets/Scripts/Managers/SceneManager.cs.meta new file mode 100644 index 00000000..c8bbc8f8 --- /dev/null +++ b/Assets/Scripts/Managers/SceneManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc495e12ea00bc248889c82ebc476f03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta new file mode 100644 index 00000000..bb96602e --- /dev/null +++ b/Assets/Scripts/Props.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f299520ed9fcf4a45858ad4ef5a8d5d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Robot.meta b/Assets/Scripts/Robot.meta new file mode 100644 index 00000000..0b5a087e --- /dev/null +++ b/Assets/Scripts/Robot.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c09ca1609552d24bbe697d1516f8aa9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scene.meta b/Assets/Scripts/Scene.meta new file mode 100644 index 00000000..eb7a8716 --- /dev/null +++ b/Assets/Scripts/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eaee2d0f48cff9b40baf0686a8105600 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Test 1/TestCamera.cs b/Assets/Scripts/Test 1/TestCamera.cs index 62b3a2d9..8e4ba89e 100644 --- a/Assets/Scripts/Test 1/TestCamera.cs +++ b/Assets/Scripts/Test 1/TestCamera.cs @@ -6,10 +6,9 @@ public class TestCamera : MonoBehaviour {
public Vector3 offset = Vector3.zero;
- // Start is called before the first frame update
- void Start()
+ void Awake()
{
-
+ SceneManager.Instance.SetMainCamera(this.gameObject.GetComponent<Camera>());
}
// Update is called once per frame
diff --git a/Assets/Scripts/Test 1/TestErika.cs b/Assets/Scripts/Test 1/TestErika.cs index 90ac0499..9f889934 100644 --- a/Assets/Scripts/Test 1/TestErika.cs +++ b/Assets/Scripts/Test 1/TestErika.cs @@ -30,12 +30,14 @@ public class TestErika : SingletonMB<TestErika> { public UnitSetUp erika; public UnitSetUp monster;
+ public GameObject unitEffect;
protected override void Awake() { base.Awake(); SetupErika(); SetupMonster(); + UnitEffect.effectPlane = unitEffect; } private void Update()
diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta new file mode 100644 index 00000000..9b4ad463 --- /dev/null +++ b/Assets/Scripts/Unit/AI/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 971e9d55b8bc0894eb6a110fb962000b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/AI/Conditionals.meta b/Assets/Scripts/Unit/AI/Conditionals.meta new file mode 100644 index 00000000..70a86da5 --- /dev/null +++ b/Assets/Scripts/Unit/AI/Conditionals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85b7e0c7ed1d12f42a5178bfbf3d934c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/AnimationData.cs b/Assets/Scripts/Unit/AnimationData.cs index 784acf05..9af3d51c 100644 --- a/Assets/Scripts/Unit/AnimationData.cs +++ b/Assets/Scripts/Unit/AnimationData.cs @@ -437,6 +437,8 @@ public class AnimationData : ScriptableObject events.Clear();
foreach (var animeEvent in animationEvents)
{
+ if (animeEvent == null)
+ continue;
if(animeEvent.startFrame == frame)
{
events.Add(animeEvent);
@@ -476,6 +478,8 @@ public class AnimationData : ScriptableObject frames.Clear();
foreach (var animeEvent in animationEvents)
{
+ if (animeEvent == null)
+ continue;
if (!frames.Contains(animeEvent.startFrame))
{
frames.Add(animeEvent.startFrame);
@@ -509,6 +513,8 @@ public class AnimationData : ScriptableObject {
foreach(var animEvent in animationEvents)
{
+ if (animEvent == null)
+ continue;
if(!AssetDatabase.IsSubAsset(animEvent))
{
AssetDatabase.AddObjectToAsset(animEvent, this);
diff --git a/Assets/Scripts/Unit/Components/UnitEffect.cs b/Assets/Scripts/Unit/Components/UnitEffect.cs new file mode 100644 index 00000000..9add6513 --- /dev/null +++ b/Assets/Scripts/Unit/Components/UnitEffect.cs @@ -0,0 +1,47 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EffectHandle
+{
+ public float lifeTime;
+ public float curTime;
+ public bool markDead;
+}
+
+//Unit后处理效果
+public class UnitEffect : UnitComponent
+{
+ public List<EffectHandle> effects = new List<EffectHandle>();
+ public static GameObject effectPlane;
+
+ public void ShowMotionBlur(float lifetime)
+ {
+ EffectHandle eff = new EffectHandle();
+ eff.lifeTime = lifetime;
+ eff.curTime = 0;
+ eff.markDead = false;
+ effects.Add(eff);
+ effectPlane.gameObject.SetActive(true);
+ }
+
+ public override void OnUpdate()
+ {
+ base.OnUpdate();
+
+ effectPlane.transform.position = UnitManager.Instance.pc.center;
+
+ for(int i = 0; i < effects.Count; ++i)
+ {
+ if (effects[i].markDead)
+ continue;
+ effects[i].curTime += Time.deltaTime;
+ if(effects[i].curTime > effects[i].lifeTime)
+ {
+ effects[i].markDead = true;
+ effectPlane.gameObject.SetActive(false);
+ }
+ }
+ }
+
+}
diff --git a/Assets/Scripts/Unit/Components/UnitEffect.cs.meta b/Assets/Scripts/Unit/Components/UnitEffect.cs.meta new file mode 100644 index 00000000..f71585b2 --- /dev/null +++ b/Assets/Scripts/Unit/Components/UnitEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62163ab86151f004294a831544bb3c39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/Components/UnitRender.cs b/Assets/Scripts/Unit/Components/UnitRender.cs index b3fd18c8..435c517d 100644 --- a/Assets/Scripts/Unit/Components/UnitRender.cs +++ b/Assets/Scripts/Unit/Components/UnitRender.cs @@ -7,6 +7,23 @@ using UnityEngine; public class UnitRender : UnitComponent { + public override void Initialize()
+ {
+ base.Initialize();
+ } + public void SetVisibilityInMainCamera(bool isVisible)
+ {
+ LayerMask mask = LayerMask.GetMask("PlayerCharacter");
+
+ if(!isVisible)
+ {
+ SceneManager.Instance.mainCamera.cullingMask &= ~mask.value;
+ }
+ else
+ {
+ SceneManager.Instance.mainCamera.cullingMask |= mask.value;
+ }
+ } } diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index 2294ae62..f3defbd7 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -8,7 +8,9 @@ public class PCController : UnitController {
public static PCController instance;
- private UnitAfterImage unitAfterImage;
+ public UnitAfterImage unitAfterImage;
+
+ public UnitEffect unitEffect;
public override UnitType type { get { return UnitType.PC; } }
@@ -29,13 +31,18 @@ public class PCController : UnitController unitAfterImage = gameObject.GetOrAddComponent<UnitAfterImage>();
unitAfterImage.Initialize();
- }
+
+ unitEffect = gameObject.GetOrAddComponent<UnitEffect>();
+ unitEffect.Initialize();
+
+ }
public override void Update()
{
base.Update();
unitAfterImage.OnUpdate();
- }
+ unitEffect.OnUpdate();
+ }
public override void OnHit(CollisionInfo info)
{
diff --git a/Assets/Scripts/Unit/Effect/UnitCamera.cs b/Assets/Scripts/Unit/Effect/UnitCamera.cs index 01194512..90d78730 100644 --- a/Assets/Scripts/Unit/Effect/UnitCamera.cs +++ b/Assets/Scripts/Unit/Effect/UnitCamera.cs @@ -4,7 +4,7 @@ using UnityEngine; // 专门用来渲染player character的相机,用来做特效 [RequireComponent(typeof(Camera))] -public class UnitCamera : MonoBehaviour +public class UnitCamera : SingletonMB<UnitCamera> { PCController pc { get { return UnitManager.Instance.pc; } } diff --git a/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs new file mode 100644 index 00000000..714d65e5 --- /dev/null +++ b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs @@ -0,0 +1,17 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EventMesh_ImageEffect_MotionBlur : AnimationEventBase
+{
+ public override TimelineEventProxy.EEventType type => TimelineEventProxy.EEventType.EventMesh_ImageEffect_MotionBlur;
+
+ public override string shortName => "M";
+
+ public float lifeTime;
+
+ public float angle;
+
+ public float amount;
+
+}
diff --git a/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs.meta b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs.meta new file mode 100644 index 00000000..e8e385f9 --- /dev/null +++ b/Assets/Scripts/Unit/Events/EventMesh_ImageEffect_MotionBlur.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a75401f0015aa1e4f856979c8aa1dae2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs b/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs new file mode 100644 index 00000000..cf6e1bc8 --- /dev/null +++ b/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs @@ -0,0 +1,13 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EventMesh_VisibilityInMainCamera : AnimationEventBase
+{
+ public override TimelineEventProxy.EEventType type => TimelineEventProxy.EEventType.EventMesh_VisibilityInMainCamera;
+
+ public override string shortName => "V";
+
+ public bool isVisible;
+
+}
diff --git a/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs.meta b/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs.meta new file mode 100644 index 00000000..eb3e8bf8 --- /dev/null +++ b/Assets/Scripts/Unit/Events/EventMesh_VisibilityInMainCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4957372b8a4fd946b86016c20f83750 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs index 356a7498..9e41e30e 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy.cs @@ -48,23 +48,26 @@ public partial class TimelineEventProxy // 不要序列化枚举值,因为可能会随时更改
public enum EEventType {
- EventGame_TimeScale, // 缩放时间 - + EventGame_TimeScale, // 缩放时间
+
+ EventMesh_ImageEffect_MotionBlur, // 运动模糊 + EventMesh_ImageEffect_Glitch, // glitch + EventMesh_AfterImage, // 角色残像
+ EventMesh_AfterImageStop, // 角色残像停止事件
+ EventMesh_FadeIn, // 角色透明度
+ EventMesh_FadeOut, // 角色透明度 + EventMesh_Gloss, // 角色泛光
+ EventMesh_VisibilityInMainCamera, // 是否在主相机渲染 + + EventUnit_SetPosition, // 设置位置
+ EventUnit_BulletTime, // 子弹时间 +
EventCamera_Zoom, // 相机聚焦 EventCamera_Shake, // 相机晃动 EventCamera_Blur, // 相机模糊 EventCamera_WhiteOut, // 相机白屏 - - EventUnit_SetPosition, // 设置位置 - - EventMesh_AfterImage, // 角色残像
- EventMesh_AfterImageStop, // 角色残像停止事件
- EventMesh_FadeIn, // 角色透明度 - EventMesh_FadeOut, // 角色透明度 - EventMesh_Gloss, // 角色泛光 - EventMesh_Blur, // 运动模糊(非后处理) - - EventEnv_Dark, +
+ EventEnv_Dark, EventEnv_Exposure, EventUI_Drift, // @@ -73,8 +76,6 @@ public partial class TimelineEventProxy EventProjectile, // 发射体 EventEffect, // 特效 EventSound, // 音效 - - EventBulletTime, // 子弹时间 } public const int FPS = 30; // timeline 每秒采样30次 diff --git a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs index a3eef37a..a15d262e 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs @@ -160,4 +160,21 @@ public partial class TimelineEventProxy // 在unitState回调里处理 } + void EventMesh_VisibilityInMainCamera(AnimationEventBase animEvent)
+ {
+ EventMesh_VisibilityInMainCamera visible = animEvent as EventMesh_VisibilityInMainCamera;
+ if (visible == null)
+ return;
+ if (owner == null || owner.unitRender == null)
+ return;
+ owner.unitRender.SetVisibilityInMainCamera(visible.isVisible);
+ } + + void EventMesh_ImageEffect_MotionBlur(AnimationEventBase animEvent)
+ {
+ EventMesh_ImageEffect_MotionBlur motionBlur = animEvent as EventMesh_ImageEffect_MotionBlur;
+ if (motionBlur == null)
+ return ;
+ ((PCController)owner).unitEffect.ShowMotionBlur(motionBlur.lifeTime);
+ } }
\ No newline at end of file |