Code: Select all
//defualt forward arccast setup for use.
Vector3 attackcast = GameManager.Instance.MainCamera.transform.forward;
//sets a Quaternion angle for adjusting arccast by calculating the angle of my forward look, multiplied to my up/down look and offset left by 20 degrees to center to raycast.
Quaternion objectRotation = Quaternion.LookRotation(GameManager.Instance.PlayerObject.transform.forward, GameManager.Instance.PlayerObject.transform.up);
//logic ladder to calculate actual arccast based on selected attack direction.
if (weaponState == WeaponStates.StrikeRight)
{
//lerps attack cast to move raycast from left to right.
attackcast = Vector3.Lerp(new Vector3(-110f, GameManager.Instance.PlayerObject.transform.position.y, GameManager.Instance.PlayerObject.transform.position.z), new Vector3(165f, GameManager.Instance.PlayerObject.transform.position.y, GameManager.Instance.PlayerObject.transform.position.z), percentagetime);
//rotates attack cast to forward position.
attackcast = objectRotation * attackcast;
//creates upwards rotation by cameras local upward rotation direction.
objectRotation = Quaternion.AngleAxis(GameManager.Instance.MainCamera.transform.localRotation.eulerAngles.x, GameManager.Instance.MainCamera.transform.right);
//applies upward rotation to forward attack cast.
attackcast = objectRotation * attackcast;
}