protected override void Awake() { base.Awake(); animator = GetComponent <Animator>(); channels = base.channels as FighterChannels; }
protected override void OnEnable() { base.OnEnable(); controlled = channels as FighterChannels; crosshair = GetComponentInChildren <CrosshairMotor>(); tracker = GetComponentInChildren <TargetTrackerMotor>(); Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; }
protected override void Awake() { base.Awake(); channels = base.channels as FighterChannels; Vector3 pos = transform.position; startPos = pos; pos.z = startZ; transform.position = pos; }
protected override void DoOutput(FighterChannels channels) { emission.enabled = channels.attack1; if (channels.attack1) { float hitDistance = range; bool didHit = Physics.Raycast(transform.position, transform.forward, out RaycastHit hit, range, hitMask); if (didHit) { hitDistance = hit.distance; hit.collider.Damage(damagePerSecond * Time.deltaTime * damageMultiplier); } SetDistance(hitDistance); Vector3 hitPos = transform.position; if (didHit) { hitPos = hit.transform.position; currentChain[0] = hit.transform.root; } for (int i = 0; i < currentChain.Length; i++) { currentChain[i] = null; } for (int i = 0; i < chain.Length; i++) { if (didHit) { didHit = false; int chainHitCount = Physics.OverlapSphereNonAlloc(hitPos, chainRadius, spherecastBuffer, hitMask); if (chainHitCount > 0) { Transform chainHitObject = null; float minDist = float.PositiveInfinity; for (int j = 0; j < chainHitCount; j++) { if (Array.IndexOf(currentChain, spherecastBuffer[j].transform.root) >= 0) { continue; } float chainDist = Vector3.SqrMagnitude(hitPos - spherecastBuffer[j].transform.position); if (chainDist < minDist) { minDist = chainDist; chainHitObject = spherecastBuffer[j].transform; } } if (chainHitObject) { chainHitObject.Damage(damagePerSecond * Time.deltaTime * damageMultiplier); currentChain[i + 1] = chainHitObject; chain[i].gameObject.SetActive(true); chain[i].transform.position = hitPos; chain[i].transform.forward = chainHitObject.position - hitPos; var main2 = chain[i].main; main2.startLifetime = Mathf.Sqrt(minDist) / main2.startSpeed.constant; didHit = true; hitPos = chainHitObject.position; } } } if (!didHit) { chain[i].gameObject.SetActive(false); } } } else { foreach (var item in chain) { item.gameObject.SetActive(false); } } }
protected override void Awake() { base.Awake(); channels = base.channels as FighterChannels; }