From d02d8779f4c36d4aec58a5d2d460f482894af3b8 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 4 Nov 2020 08:59:59 +0800 Subject: *after image --- Assets/Scripts/Effects/AfterImage/AfterImage.cs | 79 ++++++++++++++++++++++ .../Scripts/Effects/AfterImage/AfterImage.cs.meta | 11 +++ .../Scripts/Effects/AfterImage/AfterImagePool.cs | 50 ++++++++++++++ .../Effects/AfterImage/AfterImagePool.cs.meta | 11 +++ 4 files changed, 151 insertions(+) create mode 100644 Assets/Scripts/Effects/AfterImage/AfterImage.cs create mode 100644 Assets/Scripts/Effects/AfterImage/AfterImage.cs.meta create mode 100644 Assets/Scripts/Effects/AfterImage/AfterImagePool.cs create mode 100644 Assets/Scripts/Effects/AfterImage/AfterImagePool.cs.meta (limited to 'Assets/Scripts/Effects/AfterImage') diff --git a/Assets/Scripts/Effects/AfterImage/AfterImage.cs b/Assets/Scripts/Effects/AfterImage/AfterImage.cs new file mode 100644 index 00000000..1e1d0393 --- /dev/null +++ b/Assets/Scripts/Effects/AfterImage/AfterImage.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class AfterImage : MonoBehaviour +{ + public Animator myAnimator; + //public CharacterControl myCharacterControl; + public Renderer myRenderer; + + public Animator targetAnimator; + public GameObject targetObject; + + public float time; + public float intensity; + public float pow; + public float timeMax = 45; + + public bool active; + + // Use this for initialization + void Start() + { + //targetObject = + } + + // Update is called once per frame + void Update() + { + if (time > 0) + { + time--; + active = true; + intensity = (time / timeMax) * 10 * pow; + UpdateRenderer(); + } + else + { + active = false; + intensity = 0; + } + } + + void UpdateRenderer() + { + myRenderer.material.SetFloat("_Intensity", intensity); + myRenderer.material.SetFloat("_MKGlowPower", intensity); + } + + public void Activate() + { + active = true; + transform.position = targetObject.transform.position; + transform.localScale = targetObject.transform.lossyScale; + transform.rotation = targetObject.transform.rotation; + + myAnimator.Play(targetAnimator.GetCurrentAnimatorStateInfo(0).shortNameHash, 0, targetAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime); + //myAnimator.Play(myCharacterControl.animator.GetCurrentAnimatorStateInfo(0).normalizedTime); + //myAnimator.no + + //foreach (AnimatorControllerParameter param in targetAnimator.parameters) + //{ + // if (param.type == AnimatorControllerParameterType.Float) + // { + // myAnimator.SetFloat(param.name, targetAnimator.GetFloat(param.name)); + // } + // if (param.type == AnimatorControllerParameterType.Int) + // { + // myAnimator.SetInteger(param.name, targetAnimator.GetInteger(param.name)); + // } + //} + + myAnimator.speed = 0.02f; + myAnimator.Update(1/60f); + time = timeMax + 1; + Update(); + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Effects/AfterImage/AfterImage.cs.meta b/Assets/Scripts/Effects/AfterImage/AfterImage.cs.meta new file mode 100644 index 00000000..cd1fd19a --- /dev/null +++ b/Assets/Scripts/Effects/AfterImage/AfterImage.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5912e1e5f1e32ea429bf6a9ec2d11a0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs b/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs new file mode 100644 index 00000000..f9d033fd --- /dev/null +++ b/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs @@ -0,0 +1,50 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class AfterImagePool : MonoBehaviour +{ + + //public CharacterControl myCharacterControl; + public GameObject targetObject; //Set these manually to the character object you're copying + public Animator targetAnimator; //Set these manually to the character object you're copying + public GameObject prefab; //This is the prefab you made in the scene. It's a parent transform with an animator and AfterImage script on it, with Armature and SkinnedMeshRenderer children + public int poolSize = 10; + public List afterImages; + + public int interval = 10; + + public int time = 0; + + // Use this for initialization + void Start() + { + //myCharacterControl = transform.root.GetComponent(); + //Debug.Log("START AFTER IMAGE POOL"); + afterImages = new List(poolSize); + for (int i = 0; i < poolSize; i++) + { + GameObject nextAfterImage = Instantiate(prefab); + afterImages.Add(nextAfterImage.GetComponent()); + + nextAfterImage.GetComponent().targetObject = targetObject; //Game Object Target + nextAfterImage.GetComponent().targetAnimator = targetAnimator; //Animator Target + } + } + + // Update is called once per frame + void Update() + { + //if (CitadelDeep.hitPause > 0 || CitadelDeep.debugPause) { return; } + time++; + if (time > interval) { time = 0; AddAfterImage(); } + } + + void AddAfterImage() + { + for (int i = 0; i < poolSize; i++) + { + if (!afterImages[i].active) { afterImages[i].Activate(); break; } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs.meta b/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs.meta new file mode 100644 index 00000000..78d84907 --- /dev/null +++ b/Assets/Scripts/Effects/AfterImage/AfterImagePool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4aaea939b0abb3c4eb78963aedf4b2f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.1-26-g67d0