示例#1
0
 //function call to launch the passed ability
 //for launching weapon alt-fire
 public static void LaunchAbility(Ability ability)
 {
     if(ability.type==_AbilityType.AOE || ability.type==_AbilityType.Shoot){
         //get the hit point and activate the ability on that particular spot
         Ray ray = CameraControl.GetMainCamera().ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;
         if(Physics.Raycast(ray, out hit, Mathf.Infinity)) ability.Activate(hit.point);
         else ability.Activate(GameControl.GetPlayer().thisT.position); //use player position if there's no valid position
     }
     else{
         //activate the ability on the player position
         ability.Activate(GameControl.GetPlayer().thisT.position);
     }
 }
示例#2
0
文件: TDS.cs 项目: NDGAME/Git_test
 public static void SwitchAbility(Ability ability)
 {
     if(onSwitchAbilityE!=null) onSwitchAbilityE(ability);
 }
示例#3
0
        public Ability Clone()
        {
            Ability ab=new Ability();

            ab.ID=ID;
            ab.name=name;
            ab.icon=icon;
            ab.desp=desp;

            ab.type=type;

            ab.cost=cost;
            ab.cooldown=cooldown;
            ab.currentCD=currentCD;

            ab.aStats=aStats.Clone();

            ab.range=range;
            ab.shootObject=shootObject;
            ab.shootPosOffset=shootPosOffset;

            ab.launchObj=launchObj;
            ab.autoDestroyLaunchObj=autoDestroyLaunchObj;
            ab.launchObjActiveDuration=launchObjActiveDuration;

            return ab;
        }
示例#4
0
        int NewItem(int cloneID=-1)
        {
            Ability ability=null;
            if(cloneID==-1){
                ability=new Ability();
                ability.name="New Ability";
            }
            else{
                ability=abilityDB.abilityList[selectID].Clone();
            }
            ability.ID=GenerateNewID(abilityIDList);
            abilityIDList.Add(ability.ID);

            abilityDB.abilityList.Add(ability);

            UpdateLabel_Ability();

            return abilityDB.abilityList.Count-1;
        }
示例#5
0
        Vector2 DrawAbilityConfigurator(float startX, float startY, Ability ability)
        {
            //~ //float cachedX=startX;
            //~ //float cachedY=startY;

            TDSEditorUtility.DrawSprite(new Rect(startX, startY, 60, 60), ability.icon);
            startX+=65;

            cont=new GUIContent("Name:", "The ability name to be displayed in game");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY/2, width, height), cont);
            ability.name=EditorGUI.TextField(new Rect(startX+spaceX-65, startY, width-5, height), ability.name);

            cont=new GUIContent("Icon:", "The ability icon to be displayed in game, must be a sprite");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            ability.icon=(Sprite)EditorGUI.ObjectField(new Rect(startX+spaceX-65, startY, width-5, height), ability.icon, typeof(Sprite), false);

            startX-=65;
            startY+=10+spaceY;	//cachedY=startY;

            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), "Ability Type & Stats", headerStyle);

            int type=(int)ability.type;
            cont=new GUIContent("Ability Type:", "Type of the ability which determine the targeting mechanic and potential target");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            contL=new GUIContent[abilityTypeLabel.Length];
            for(int i=0; i<contL.Length; i++) contL[i]=new GUIContent(abilityTypeLabel[i], abilityTypeTooltip[i]);
            type = EditorGUI.Popup(new Rect(startX+spaceX, startY, width, 15), new GUIContent(""), type, contL);
            ability.type=(_AbilityType)type;

            startY+=5;

            cont=new GUIContent("Cost:", "The energy cost to launch the ability");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            ability.cost=EditorGUI.FloatField(new Rect(startX+spaceX, startY, 40, height), ability.cost);

            cont=new GUIContent("Cooldown:", "The cooldown in second for the ability before it can be used again after it's used");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            ability.cooldown=EditorGUI.FloatField(new Rect(startX+spaceX, startY, 40, height), ability.cooldown);

            startY+=10;

            if(ability.type==_AbilityType.Shoot){
                cont=new GUIContent("Range:", "The shoot range of the ability");
                EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
                ability.range=EditorGUI.FloatField(new Rect(startX+spaceX, startY, 40, height), ability.range);

                cont=new GUIContent("Shoot Object:", "The prefab of the bullet/object fired by the weapon\nMust be a prefab with ShootObject component attached on it");
                EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
                ability.shootObject=(GameObject)EditorGUI.ObjectField(new Rect(startX+spaceX, startY, width, height), ability.shootObject, typeof(GameObject), false);

                cont=new GUIContent("Shoot Pos Offset:", "The relative shoot position to the position of the player transform, in player transform space");
                EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
                ability.shootPosOffset=EditorGUI.Vector3Field(new Rect(startX+spaceX, startY, width, height), "", ability.shootPosOffset);
            }

            startY+=10;

            bool showAOE=ability.type==_AbilityType.AOE | ability.type==_AbilityType.AOESelf | ability.type==_AbilityType.Shoot;
            Vector2 v2=DrawAttackStats(startX, startY+spaceY, ability.aStats, showAOE);
            startY=v2.y+15;

            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), "Miscellaneous", headerStyle);

            cont=new GUIContent("Launch Object:", "The object to be spawned when the ability is launched (optional)");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            ability.launchObj=(GameObject)EditorGUI.ObjectField(new Rect(startX+spaceX, startY, width, height), ability.launchObj, typeof(GameObject), false);

            cont=new GUIContent("AutoDestroy Effect:", "Check if the launch object needs to be removed from the game");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            if(ability.launchObj!=null){
                ability.autoDestroyLaunchObj=EditorGUI.Toggle(new Rect(startX+spaceX, startY, 40, height), ability.autoDestroyLaunchObj);

                if(ability.autoDestroyLaunchObj){
                    cont=new GUIContent(" - Duration:", "The delay in seconds before the launch object is destroyed");
                    EditorGUI.LabelField(new Rect(startX+spaceX+15, startY, width, height), cont);
                    ability.launchObjActiveDuration=EditorGUI.FloatField(new Rect(startX+spaceX+width-58, startY, 40, height), ability.launchObjActiveDuration);
                }
            }
            else EditorGUI.LabelField(new Rect(startX+spaceX, startY, 40, height), "-");

            startY+=5;

            cont=new GUIContent("Launch SFX:", "Audio clip to play when the ability is launched (optional)");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, width, height), cont);
            ability.launchSFX=(AudioClip)EditorGUI.ObjectField(new Rect(startX+spaceX, startY, width, height), ability.launchSFX, typeof(AudioClip), false);

            startY+=15;

            GUIStyle style=new GUIStyle("TextArea");
            style.wordWrap=true;
            cont=new GUIContent("Ability description (to be used in runtime): ", "");
            EditorGUI.LabelField(new Rect(startX, startY+=spaceY, 400, 20), cont);
            ability.desp=EditorGUI.TextArea(new Rect(startX, startY+spaceY-3, 270, 150), ability.desp, style);

            return new Vector2(startX, startY+200);
        }
示例#6
0
文件: Weapon.cs 项目: NDGAME/Git_test
        void Awake()
        {
            //make sure none of the element in shootPointList is null
            for(int i=0; i<shootPointList.Count; i++){
                if(shootPointList[i]==null){
                    shootPointList.RemoveAt(i);	i-=1;
                }
            }

            //if no shoot point has been assigned, use the current transform
            if(shootPointList.Count==0) shootPointList.Add(transform);

            if(shootObject!=null) InitShootObject();

            aStats.Init();	//initiate the attack stats

            //create the ability
            ability=AbilityDB.CloneItem(abilityID);

            if(shootObject!=null) ObjectPoolManager.New(shootObject, 3);
            else Debug.LogWarning("shoot object for weapon unassigned", this);

            Reset();
        }