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);
    }
Пример #2
0
    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);
    }
Пример #3
0
 private void OnEnable()
 {
     targetOrigin = target as ShootOriginScript;
 }