/// <summary> /// Unity Update method /// Update is called every frame, if the MonoBehaviour is enabled /// </summary> void Update() { if (m_State == LaserbladeState.Draw) { m_DrawTimer += Time.deltaTime; if (m_DrawTimer >= m_DrawTime) { m_State = LaserbladeState.None; blade.localScale = new Vector3(1f, drawn_scale, 1f); return; } float val = Mathf.Clamp01(m_DrawTimer / m_DrawTime); float curScale = Mathf.Lerp(original_scale, drawn_scale, val); blade.localScale = new Vector3(1f, curScale, 1f); } else if (m_State == LaserbladeState.Sheathe) { m_DrawTimer += Time.deltaTime; if (m_DrawTimer >= m_DrawTime) { m_State = LaserbladeState.None; blade.localScale = new Vector3(1f, original_scale, 1f); return; } float val = Mathf.Clamp01(m_DrawTimer / m_DrawTime); float curScale = Mathf.Lerp(drawn_scale, original_scale, val); blade.localScale = new Vector3(1f, curScale, 1f); } }
/// <summary> /// play sheathe blade clip and start scaling blade transform /// </summary> public void sheatheBlade() { if (!m_Drawn) { return; } m_State = LaserbladeState.Sheathe; m_DrawTimer = 0.0f; m_AudioSource.Stop(); AudioSource.PlayClipAtPoint(sheatheClip, transform.position); m_Drawn = false; }
/// <summary> /// play draw blade clip and start scaling blade transform /// </summary> public void drawBlade() { if (m_Drawn) { return; } m_State = LaserbladeState.Draw; m_DrawTimer = 0.0f; AudioSource.PlayClipAtPoint(drawClip, transform.position); m_AudioSource.Play(); m_Drawn = true; }