private bool TryCreateAbility(int abilityIndex, out AbilityHolder abilityHolder) { abilityHolder = null; AbilityCreator ac = GetAbilityHolder(abilityIndex); if (ac == null) { return(false); } abilityHolder = ac.SelfAbilityHolder; return(true); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player") && !picked) { PhaseController pc = collision.GetComponent <PhaseController>(); pc.actualAbility = AbilityCreator.CreateAbility(type, pc); if (effect != null) { effect.SetActive(false); } picked = true; coroutine = Pickup(pc); StartCoroutine(coroutine); } }
public static AbilityCreator CreateScriptableObject() { AbilityCreator asset = ScriptableObject.CreateInstance <AbilityCreator>(); string assetpath = "Assets/Abilities/Ability.asset"; string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(assetpath); Ability ability = new Ability(); ability.Id = Path.GetFileNameWithoutExtension(assetPathAndName); AssetSerializer serializer = new AssetSerializer(); serializer.AddItem(ability); asset.source = serializer.WriteToString(); AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return(asset); }
public override void Load() { Camera.main.transform.position = camPos; transform.position = pos; transform.rotation = rot; transform.localScale = scale; Rigidbody2D rb = GetComponent <Rigidbody2D>(); rb.velocity = Vector2.zero; rb.gravityScale = gravity; PhaseController pc = GetComponent <PhaseController>(); pc.SendRequestToChangePhase(phase); if (ability != SuperAbility.Abilities.None) { pc.actualAbility = AbilityCreator.CreateAbility(ability, pc); } else { pc.ClearAbility(); } }