| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.TextCore.Text;
- public class SwordsControl : MonoBehaviour
- {
- public enum SwordsControlState
- {
- Damage,
- Scale,
- All
- }
- public float intervalTime; //造成伤害的间隔时间
- public int boostNum;
- public List<MoveCharacter> moveCharacrters = new List<MoveCharacter>(); //被造成伤害的角色
- public float totalTime; //多少时间后消失
- [HideInInspector] public float time; //经过的时间
- public GameObject parent;
- public PlayerController owner;
- public int conductId;
- [Header("伤害基数")]
- public int damage;
- [Header("范围基数")]
- public float scale;
- public SwordsControlState swordsControl;
- public float[] stageSize;
- public int[] demonicDieNum;
- private void Start()
- {
- if (swordsControl != SwordsControlState.Damage)
- {
- print(111111);
- transform.parent.parent.localScale = Vector3.one * scale * TranSize(boostNum);
- }
- }
- private void Update()
- {
- time += Time.deltaTime;
- if (time >= totalTime)
- {
- owner.conductCanRelease[conductId] = true;
- parent.SetActive(false);
- }
- }
- private void OnTriggerEnter(Collider other)
- {
- BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
- if (beHitTrigger != null)
- {
- if (beHitTrigger.owner.gameObject.tag == "Enemy")
- {
- MoveCharacter character = other.GetComponentInParent<MoveCharacter>();
- moveCharacrters.Add(character);
- character.sustainedInjuryTime = intervalTime;
- character.sustainedInjury_IntervalTime = intervalTime;
- if(swordsControl != SwordsControlState.Scale)
- {
- character.sustainedInjury_damage = damage * boostNum;
- }
- character.isSustainedInjury = true;
- }
- }
- }
- private void OnTriggerExit(Collider other)
- {
- BeHitTrigger beHitTrigger = other.GetComponent<BeHitTrigger>();
- if (beHitTrigger != null)
- {
- if (beHitTrigger.owner.gameObject.tag == "Enemy")
- {
- MoveCharacter character = other.GetComponentInParent<MoveCharacter>();
- if (moveCharacrters.Exists(i => i == character))
- {
- character.isSustainedInjury = false;
- moveCharacrters.Remove(character);
- }
- }
- }
- }
- private void OnDisable()
- {
- for (int i = 0; i < moveCharacrters.Count; i++)
- {
- moveCharacrters[i].isSustainedInjury = false;
- }
- }
- private float TranSize(int dieNum)
- {
- for (int i = stageSize.Length - 1; i >= 0; i--)
- {
- if (dieNum >= demonicDieNum[i])
- {
- if (i == stageSize.Length - 1)
- {
- return stageSize[i];
- }
- float size = stageSize[i] + (stageSize[i + 1] - stageSize[i]) / (demonicDieNum[i + 1] - demonicDieNum[i]) * (dieNum - demonicDieNum[i]);
- return size;
- }
- }
- return 1;
- }
- }
|