public static WeaponScript ComposeWeapon(WeaponCreationParameters weaponCreationParameters, string weaponName) { GameObject newWeaponObject = new GameObject(); newWeaponObject.name = weaponName; WeaponScript weaponComponent = newWeaponObject.AddComponent <WeaponScript>(); List <ShootOriginScript> origins = new List <ShootOriginScript>(); for (int i = 0; i < weaponCreationParameters.numberOfShootOrigins; i++) { GameObject newOriginObject = new GameObject(); newOriginObject.name = "Shoot Origin " + (i + 1); newOriginObject.transform.parent = newWeaponObject.transform; newOriginObject.transform.localPosition = Vector3.zero; newOriginObject.transform.localRotation = Quaternion.identity; ShootOriginScript shootOriginComponent = newOriginObject.AddComponent <ShootOriginScript>(); float xPos = (-weaponCreationParameters.lateralDistanceBetweenEachOrigin * (weaponCreationParameters.numberOfShootOrigins - 1)) / 2 + i * weaponCreationParameters.lateralDistanceBetweenEachOrigin; newOriginObject.transform.localPosition = new Vector3(xPos, 0, 0); float zAngle = (weaponCreationParameters.angleBetweenEachOrigin * (weaponCreationParameters.numberOfShootOrigins - 1)) / 2 - i * weaponCreationParameters.angleBetweenEachOrigin; newOriginObject.transform.localRotation = Quaternion.Euler(0, 0, zAngle); origins.Add(shootOriginComponent); } weaponComponent.SetShootOrigins(origins); return(weaponComponent); }
public static void ShowShootOrigin(ShootOriginScript shootOrigin) { Vector3 pos = shootOrigin.transform.position; Quaternion rot = shootOrigin.GetShootRotation; Handles.SphereHandleCap(0, pos, rot, HandleUtility.GetHandleSize(shootOrigin.transform.position) * 0.2f, EventType.Repaint); Handles.ArrowHandleCap(0, pos, rot, HandleUtility.GetHandleSize(shootOrigin.transform.position) * 1f, EventType.Repaint); }
private void OnEnable() { targetOrigin = target as ShootOriginScript; }