Need help adjusting my sword's slashing mechanic.

So here’s a short video of what I have so far:

What I really want is to have consistent rotation of the sword. For it to materialize (fade in from opacity = 0 and then increment to 100) at a position that looks something like a ready to swing sword position, then rotate on a 45 degree slanted axis which i tried with ‘new Vector3 (-1,1,0)’ and i tried rotating around that. then swing around the axis and stop after travelling like 180 degrees or something.

So to have some kind of slashing motion moving the center of the sword around the player on some axis and keeping rotation.

Specifically at 1:10 in the video you can really see that it’s not keeping some relative rotation to the player it’s doing something with a global variable or something… I can’t really explain that, i kind of understand what’s happening.

Right now the below code is kind of just what I got after messing around for a while.

-I want the player to hit one button, just once.
-Then the slash happens/executed and destroys itself, preferably with opacity also going from 100 to 0
-AND to only be able to slash again once the sword is destroyed as you can see at the end of the video I have two swords at once and they’re both like fighting halfway to comply with the script.

The code so far, #1 is the melee script attached to the player:

using UnityEngine;
using System.Collections;

public class Melee : MonoBehaviour
{

  public GameObject Sword;
  public Vector3 swordOffset;
  public Vector3 swordOffset2;
  GameObject swordInst;
  Vector3 rotAround;

  void Update()
  {
    swordOffset = transform.TransformPoint(new Vector3(2.7f, 2.7f, -1.1f));
    swordOffset2 = transform.TransformPoint(new Vector3(3, 0, 0));
    //swordOffset = transform.TransformPoint(Vector3.right * 3);

    if (Input.GetMouseButtonDown(1))
    {
      //(Instantiate(Sword, swordOffset, Quaternion.Euler(-45,90,270)) as GameObject).transform.parent = transform;
      //swordInst = Instantiate(Sword, swordOffset, transform.localRotation) as GameObject;
      //swordInst.transform.parent = transform;
      //swordInst.transform.localEulerAngles = new Vector3(0, 90, 270);
      (Instantiate(Sword, swordOffset, Quaternion.Euler(-38, 130, 242)) as GameObject).transform.parent = transform;

    }

    if (Input.GetMouseButtonDown(2))
    {
      //(Instantiate(Sword, swordOffset, Quaternion.Euler(-45,90,270)) as GameObject).transform.parent = transform;
      //swordInst = Instantiate(Sword, swordOffset, transform.localRotation) as GameObject;
      //swordInst.transform.parent = transform;
      //swordInst.transform.localEulerAngles = new Vector3(0, 90, 270);
      (Instantiate(Sword, swordOffset2, Quaternion.Euler(0, 90, 270)) as GameObject).transform.parent = transform;

    }

  }

}

#2 the swordSlash script on the sword prefab so every time it instantiates it does this:

using UnityEngine;
using System.Collections;

public class swordSlash : MonoBehaviour
{
  public AudioClip swordClang;

  void Start()
  {
  }

  void Update()
  {
    if (Input.GetMouseButton(1))
    {
      //iTween.MoveTo(gameObject, iTween.Hash("path", iTweenPath.GetPath("1"), "islocal", true, "time", 2));
      transform.localPosition = Vector3.Slerp(transform.localPosition, new Vector3(-2.7f, -1.4f, 1.1f), 0.1f);
      //transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(34, -111, 254), Time.deltaTime * 10f);
      transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(34, -111, 254), Time.deltaTime * 10f);


      //if (transform.rotation.y > 0.5)
      //Debug.Log("sword rotation " + (transform.rotation.y));
    }
    else if (Input.GetMouseButtonUp(1))
    {

      Destroy(gameObject);
    }


    if (Input.GetMouseButton(2))
    {
    transform.localPosition = Vector3.Slerp(transform.localPosition, new Vector3(0, 2, 3), 0.5f);
    //transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(34, -111, 254), Time.deltaTime * 10f);
    transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(-25, 0, 0), Time.deltaTime * 12f);


    }
    else if(Input.GetMouseButtonUp(2))
    {
      Destroy(gameObject);

    }
  }


  void OnTriggerEnter(Collider other)
  {
    if(other.CompareTag("EnemyBullet"))
    {
      audio.PlayOneShot(swordClang);
      Destroy(other);
    }
  }

}

Oh also, I’m not married to these scripts or this idea of how to achieve a slash effect,
If you think this is atrocious let me know, I’m willing to start from scratch.
Should I make an animation for the mesh elsewhere and do it that way?
yes eventually i want the mesh to animated just haven’t gotten around to it.

Also another question when swinging a mesh at high speeds like i am, it should be a trigger right and not a collider?