private IEnumerator UpdateLineCoroutine() { HeroActionLine lineToRender = GetLine(0); float t = 0f; int feedbackID = 0; while (true) { t += (Time.deltaTime); if (t > 1f) t = 0f; for (int i = 0; i < lineToRender.line.Count; i++) { lineToRender.line[i].transform.rotation = globalCamera.Rotation(); lineToRender.line[i].SetBool("Intersection", doesIntersect); lineToRender.line[i].ResetTrigger("DirectionFeedback"); } feedbackID = (int) Mathf.Lerp(0f, lineToRender.line.Count, t); if (lineToRender.line.Count > 0) { //spriteDirection = lineToRender.line[feedbackID].transform; lineToRender.line[feedbackID].SetTrigger("DirectionFeedback"); } UpdateOtherLines(); yield return null; } }
// ================================================================================================ // ================================================================================================ // Draw Line private void DrawLineRaycast(int lineID, Vector3 startLine, Vector3 endLine) { HeroActionLine lineToRender = GetLine(lineID); Vector3 direction = endLine - startLine; float size = 0; int index = 0; while (size < (direction.magnitude - spriteOffset)) { size += spriteOffset; if (Physics.Raycast(startLine + (direction * size / direction.magnitude), Vector3.down, out hit, 10f, layerMask)) { AddSpriteToLine(lineToRender, index, hit.point); } else { AddSpriteToLine(lineToRender, index, startLine + (direction * size / direction.magnitude) - new Vector3(0, this.transform.localPosition.y, 0)); } index += 1; } for (int i = index; i < lineToRender.line.Count; i++) { lineToRender.line[i].gameObject.SetActive(false); } // Draw Cursor if (Physics.Raycast(endLine, Vector3.down, out hit, 10f, layerMask)) cursorObject.transform.position = hit.point + offset; else { cursorObject.transform.position = endLine + offset - this.transform.localPosition; } }
protected virtual void FeedbackLine(int lineID) { HeroActionLine lineToRender = GetLine(lineID); for (int i = 0; i < lineToRender.line.Count; i++) { lineToRender.line[i].SetTrigger("LineFeedback"); } }
private void HideLine(int lineID) { HeroActionLine lineToRender = GetLine(lineID); for (int i = 0; i < lineToRender.line.Count; i++) { lineToRender.line[i].gameObject.SetActive(false); } }
private void UnfeedbackLine() { HeroActionLine lineToRender = GetLine(0); for (int i = 0; i < lineToRender.line.Count; i++) { lineToRender.line[i].SetTrigger("Reset"); } }
protected override void FeedbackLine(int lineID) { HeroActionLine lineToRender = GetLine(lineID); for (int i = 0; i < lineToRender.line.Count; i++) { lineToRender.line[i].SetTrigger("LineFeedback"); lineToRender.line[i].ResetTrigger("Reset"); } }
private void AddSpriteToLine(HeroActionLine lineToRender, int index, Vector3 pos) { if(lineToRender.line.Count <= index) { lineToRender.line.Add(Instantiate(spritePrefab, this.transform)); } lineToRender.line[index].gameObject.SetActive(true); lineToRender.line[index].transform.position = pos + offset; }