예제 #1
0
 public override void Init(SkillNode skillNode, GameObject targetTrans, Transform thisTrans, VoidResult action = null)
 {
     base.Init(skillNode, targetTrans, thisTrans, action);
     if (mCurSkillNode != null && attackerCs != null)
     {
         if (thisTrans)
         {
             CharacterPart rightPart = attackerCs.playerPart.Find(a => a.mRolePart == RolePart.RightHand);
             tractionPoint = rightPart == null ? null : rightPart.transform;
             FindBip(thisTrans, ref tractionPoint, "Bip001 R Hand");
             FindBip(thisTrans, ref startPoint, "Bip001");
         }
         if (targetTrans != null)
         {
             if (mHitTargetCs.state == Modestatus.Tower)
             {
                 targetPoint = hit;
             }
             else
             {
                 FindBip(targetTrans.transform, ref targetPoint, "Bip001");
             }
             HitTarget();
             mTractionDistance = attackerCs.pm.nav.radius * attackerCs.transform.localScale.z + mHitTargetCs.pm.nav.radius * attackerCs.transform.localScale.z;
         }
     }
 }
예제 #2
0
	public void Initialize(CharacterPart[] parts) {
		this.parts = parts;
		partsRenderer[0].sprite = parts[0].sprite;
		partsRenderer[1].sprite = parts[1].sprite;
		partsRenderer[2].sprite = parts[2].sprite;
		partsRenderer[3].sprite = parts[3].sprite;
	}
예제 #3
0
	public bool AddPart(CharacterPart part) {
		if (HasCategory(part))
			return false;

		_parts.Add(part);
		return true;
	}
예제 #4
0
	public void Initialize()
    {
		Sprite[] hatSprites = Resources.LoadAll<Sprite>("Sprites/characters/hats");
		_hats = new CharacterPart[hatSprites.Length];
		for (int i = 0; i < hatSprites.Length; i++) {
			_hats[i] = new CharacterPart(hatSprites[i], CharacterPart.Category.HAT, "");
		}

		Sprite[] headSprites = Resources.LoadAll<Sprite>("Sprites/characters/head");
		_heads = new CharacterPart[headSprites.Length];
		for (int i = 0; i < headSprites.Length; i++) {
			_heads[i] = new CharacterPart(headSprites[i], CharacterPart.Category.HEAD, "");
		}

		Sprite[] bodySprites = Resources.LoadAll<Sprite>("Sprites/characters/body");
		_bodies = new CharacterPart[bodySprites.Length];
		for (int i = 0; i < bodySprites.Length; i++) {
			_bodies[i] = new CharacterPart(bodySprites[i], CharacterPart.Category.BODY, "");
		}

		Sprite[] pantSprites = Resources.LoadAll<Sprite>("Sprites/characters/pants");
		_pants = new CharacterPart[pantSprites.Length];
		for (int i = 0; i < pantSprites.Length; i++) {
			_pants[i] = new CharacterPart(pantSprites[i], CharacterPart.Category.PANT, "");
		}
	}
예제 #5
0
    void Start()
    {
        part = GetComponent <CharacterPart>();
        switch (part.partOrientation)
        {
        case CharacterPart.PartOrientation.left:
            rumble = Vector2.right * rumblePower;
            break;

        case CharacterPart.PartOrientation.right:
            rumble = Vector2.up * rumblePower;
            break;

        default:
            rumble = Vector2.one * rumblePower;
            break;
        }

        character = part.creator.character;

        if (character)
        {
            if (character.characterLook)
            {
                lookPoint = character.characterLook.lookPoint;
            }
            else
            {
                Debug.LogError("No look point found!", character);
            }
        }
    }
예제 #6
0
 public void givePart(CharacterPart part)
 {
     parts.RemoveAll(p => p.partType == part.partType);
     statUpgrades.RemoveAll(s => (s as CharacterPart)?.partType == part.partType);
     part.EquipPart();
     parts.Add(part);
     giveStatUpgrade(part);
 }
    /// <summary>
    /// Set character head mesh
    /// </summary>
    /// <param name="index"Index of element></param>
    public void SetHeadByIndex(int index)
    {
        CharacterPart head = GetCharacterPart("Head");

        head.skinnedMesh.sharedMesh = headsPresets[index].mesh;

        headActiveIndex = index;
    }
예제 #8
0
        public CharacterData GetCharacterData()
        {
            var psdLayers = dataProvider.GetPSDLayers();
            var groups    = psdLayers.Where(x => x.isGroup).Select(y => new CharacterGroup()
            {
                name        = y.name,
                parentGroup = ParentGroupInFlatten(y.parentIndex, psdLayers)
            }).ToArray();

            var cd          = dataProvider.characterData;
            var parts       = cd.parts == null ? new List <CharacterPart>() : cd.parts.ToList();
            var spriteRects = dataProvider.GetSpriteMetaData();

            parts.RemoveAll(x => Array.FindIndex(spriteRects, y => y.spriteID == new GUID(x.spriteId)) == -1);
            foreach (var spriteMetaData in spriteRects)
            {
                var           srIndex = parts.FindIndex(x => new GUID(x.spriteId) == spriteMetaData.spriteID);
                CharacterPart cp      = srIndex == -1 ? new CharacterPart() : parts[srIndex];
                cp.spriteId       = spriteMetaData.spriteID.ToString();
                cp.spritePosition = new RectInt();
                var uvTransform   = spriteMetaData.uvTransform;
                var outlineOffset = new Vector2(spriteMetaData.rect.x - uvTransform.x, spriteMetaData.rect.y - uvTransform.y);
                cp.spritePosition.position = new Vector2Int((int)outlineOffset.x, (int)outlineOffset.y);
                cp.spritePosition.size     = new Vector2Int((int)spriteMetaData.rect.width, (int)spriteMetaData.rect.height);
                cp.parentGroup             = -1;
                //Find group
                var spritePSDLayer = psdLayers.FirstOrDefault(x => x.spriteID == spriteMetaData.spriteID);
                if (spritePSDLayer != null)
                {
                    cp.parentGroup = ParentGroupInFlatten(spritePSDLayer.parentIndex, psdLayers);
                }


                if (srIndex == -1)
                {
                    parts.Add(cp);
                }
                else
                {
                    parts[srIndex] = cp;
                }
            }

            var layers = dataProvider.GetPSDLayers();

            parts.Sort((x, y) =>
            {
                var xIndex = layers.FindIndex(l => l.spriteID == new GUID(x.spriteId));
                var yIndex = layers.FindIndex(l => l.spriteID == new GUID(y.spriteId));
                return(xIndex.CompareTo(yIndex));
            });

            parts.Reverse();
            cd.parts           = parts.ToArray();
            cd.dimension       = dataProvider.documentSize;
            cd.characterGroups = groups.ToArray();
            return(cd);
        }
예제 #9
0
	public void SetPart(CharacterPart part) {
		for (int i = 0; i < parts.Length; i++) {
			if (part.category == parts[i].category) {
				parts[i] = part;
				partsRenderer[i].sprite = part.sprite;
				return;
			}
		}
	}
예제 #10
0
    /// <summary>
    /// Set character head mesh
    /// </summary>
    /// <param name="index"Index of element></param>
    public void SetHeadByIndex(int index)
    {
        CharacterPart head = GetCharacterPart("Head");

        for (var i = 0; i < headsPresets[index].mesh.Length; i++)
        {
            head.skinnedMesh[i].sharedMesh = headsPresets[index].mesh[i];
        }
        headActiveIndex = index;
    }
예제 #11
0
        CharacterSpriteSet GetSetFromName(CharacterPart key, string Name)
        {
            if (string.IsNullOrEmpty(Name))
            {
                return(null);
            }
            var path = $"Sprite Sets/{key}/{Name}";
            var obj  = Resources.Load <CharacterSpriteSet>(path);

            //Debug.Log($"Loading {obj} as {key}");

            return(obj);
        }
    GameObject partToGameobject(CharacterPart part)
    {
        GameObject go = null;

        foreach (Transform child in transform)
        {
            if (child.gameObject.GetInstanceID() == part.ID)
            {
                return(child.gameObject);
            }
        }



        return(go);
    }
    public CharacterSpriteSet GetRandom(int tone, Gender gender, CharacterPart part)
    {
        collection.gender   = gender;
        collection.clothing = (SpriteSetCollection.CharacterClothing)part;

        switch (part)
        {
        case CharacterPart.None:
            Debug.Log("uh.. wrong, guess again..");
            return(null);

        case CharacterPart.Hair:
            collection.hairColor = (HairColor)Random.Range(0, 5);
            return(RandomFromList(collection.Hairstyles));

        case CharacterPart.Head:
            return(collection.SpriteSets[(SpriteSetCollection.GeneralCharacterPart)part][tone]);

        case CharacterPart.Face:
            return(collection.SpriteSets[(SpriteSetCollection.GeneralCharacterPart)part][0]);

        case CharacterPart.Facial:
            //Debug.Log("No facials yet");
            return(null);

        case CharacterPart.Top:
            return(RandomFromList(collection.Clothes));

        case CharacterPart.Body:
            return(collection.SpriteSets[(SpriteSetCollection.GeneralCharacterPart)part][tone]);

        case CharacterPart.Bottom:
            return(RandomFromList(collection.Clothes));

        case CharacterPart.Hands:
            return(collection.SpriteSets[(SpriteSetCollection.GeneralCharacterPart)part][tone]);

        case CharacterPart.Other:
            //Debug.Log("No other yet");
            return(null);

        default:
            break;
        }

        return(null);
    }
예제 #14
0
	public void GenerateKiller() {
		Appearance appearance;
		CharacterPart[] parts;

		appearance = Instantiate(prefabKiller).GetComponent<Appearance>();

		appearance.transform.parent = charactersContainer;

		parts = new CharacterPart[4];
		parts[0] = _hats[Random.Range(0, _hats.Length)];
		parts[1] = _heads[Random.Range(0, _heads.Length)];
		parts[2] = _bodies[Random.Range(0, _bodies.Length)];
		parts[3] = _pants[Random.Range(0, _pants.Length)];
		appearance.Initialize(parts);

		level.AddCharacter(appearance.transform);
	}
예제 #15
0
    void AddPart(List <GameObject> objectList, FetchPart fetchPart, CharacterPart.PartOrientation orientation = CharacterPart.PartOrientation.middle)
    {
        if (fetchPart.partIndex < objectList.Count && objectList[fetchPart.partIndex] != null)
        {
            CharacterPart part = Instantiate(objectList[fetchPart.partIndex], transform).GetComponent <CharacterPart>();
            part.name       = objectList[fetchPart.partIndex].name;
            part.partColor1 = fetchPart.partColor1;
            part.partColor2 = fetchPart.partColor2;

            part.Initialize(orientation);
            if (part.anim != null)
            {
                character.anims.Add(part.anim);
            }

            parts.Add(part);
        }
    }
예제 #16
0
    /// <summary>
    /// Set hair by index
    /// </summary>
    /// <param name="index">index in hair presets</param>
    public void SetHairByIndex(int index)
    {
        CharacterPart hair = GetCharacterPart("Hair");

        if (index != -1)
        {
            for (var i = 0; i < hairPresets[index].mesh.Length; i++)
            {
                hair.skinnedMesh[i].sharedMesh = hairPresets[index].mesh[i];
            }
        }
        else
        {
            foreach (var hairsm in hair.skinnedMesh)
            {
                hairsm.sharedMesh = null;
            }
        }
        hairActiveIndex = index;
    }
예제 #17
0
 public void PlaySpellEffect(string id)
 {
     if (eft != null)
     {
         eft.Quartz(GetEffectResourceRoot() + id + "_shifa", id);
         if (cs.GetMobaName().Equals("boss_003") && id.Equals("skill3") ||
             (cs.GetMobaName().Equals("boss_006") && id.Equals("skill4")))
         {
             GameObject spellEffect;
             eft.dic.TryGetValue(id, out spellEffect);
             CharacterPart cp = cs.playerPart.Find(a => a.mRolePart == RolePart.Head);
             if (spellEffect != null && cp != null)
             {
                 spellEffect.transform.parent        = cp.transform;
                 spellEffect.transform.localPosition = Vector3.zero;
                 spellEffect.transform.localRotation = Quaternion.identity;
                 spellEffect.transform.localScale    = Vector3.one;
             }
         }
     }
 }
예제 #18
0
        void MassSpawn()
        {
            for (int i = 0; i < 5; i++)
            {
                item.Bot   = SpriteCollection[i];
                item.Top   = SpriteCollection[i];
                item.Right = SpriteCollection[i];
                item.Left  = SpriteCollection[i];

                item.Part = part;
                SetType   = part;

                Name = GetName(i);

                CreateAsset();
                NextIndex++;
            }


            SpriteCollection.Clear();
        }
예제 #19
0
	public void GenerateNPCs() {
		npcs = new List<Appearance>();
		Appearance npcAppearance;
		CharacterPart[] parts;
		for (int i = 0; i < nbrOfCharacters; i++)
		{
			npcAppearance = Instantiate(prefabNPC).GetComponent<Appearance>();

			npcAppearance.transform.parent = charactersContainer;

			parts = new CharacterPart[4];
			parts[0] = _hats[Random.Range(0, _hats.Length)];
			parts[1] = _heads[Random.Range(0, _heads.Length)];
			parts[2] = _bodies[Random.Range(0, _bodies.Length)];
			parts[3] = _pants[Random.Range(0, _pants.Length)];
			npcAppearance.Initialize(parts);

			level.AddCharacter(npcAppearance.transform);
			npcs.Add(npcAppearance);

			NPC npc = npcAppearance.GetComponent<NPC>();
			MoveToTarget npcMoveToTarget = npc.GetMoveToTarget();
			if (npcMoveToTarget != null)
			{
				npcMoveToTarget.Init(killerBehavior, level);
			}

			MoveToWaypoints npcMoveToWaypoints = npc.FindBehaviour<MoveToWaypoints>();
			if (npcMoveToWaypoints != null)
			{
				level.SetRandomPath(npcMoveToWaypoints);
			}

			MoveToNewWaypoints npcMoveToNewWaypoints = npc.FindBehaviour<MoveToNewWaypoints>();
			if (npcMoveToNewWaypoints != null)
			{
				npcMoveToNewWaypoints.Init(level);
			}

			MoveToSolo npcMoveToSolo = npc.FindBehaviour<MoveToSolo>();
			if (npcMoveToSolo != null)
			{
				npcMoveToSolo.Init(level);
			}
		}
	}
예제 #20
0
        public void update()
        {
            //Updates angle data with the kinect object
            data.readData(kinect);

            //Get key Presses
            key.update();

            //Zeros all data so that your position is now the base position
            if (key.getKey(Keys.Z))
            {
                data.zero();
            }

            //Body swapping stuff
            if (key.getKey(Keys.W))
            {
                bodyId++;
                if (bodyId >= bodyNames.Count)
                {
                    bodyId = 0;
                }
                body = BodyLoader.loadBody(bodyNames[bodyId]);
            }
            if (key.getKey(Keys.E))
            {
                backgroundId = (backgroundId == background.Count - 1) ? 0 : backgroundId + 1;
            }
            if (key.getKey(Keys.Q))
            {
                saving = !saving;
                if (saving)
                {
                    saves.Add(new Save(bodyNames[bodyId]));
                }

                if (!saving)
                {
                    saves[saves.Count - 1].select();
                }
            }

            if (key.getKey(Keys.Delete))
            {
                for (int i = 0; i < saves.Count; i++)
                {
                    if (saves[i].selected)
                    {
                        saves.RemoveAt(i);
                        i--;
                    }
                }
            }
            if (key.getKey(Keys.P))
            {
                guy = !guy;
            }

            //Select pressed numbers
            int num = key.getNum();

            if (num != -1 && saves.Count > num)
            {
                saves[num].select();
            }

            //Saving
            if (saving)
            {
                saves[saves.Count - 1].addFrame(data.angles);
            }
        }
예제 #21
0
 //! Get part prefab name.
 public string PartPrefab(CharacterPart Part, CharacterGroup Group, CharacterType Type)
 {
     return(characterParts[Part][Group][(int)Type].prefab);
 }
예제 #22
0
 public ClothItem(CharacterPart Part, CharacterType Type)
 {
     part = Part;
     type = Type;
 }
예제 #23
0
    /// <summary>
    /// 注册部件
    /// </summary>
    protected virtual void registParts()
    {
        _list = new PlayerBasePart[17];
        int i = 0;

        system = new SystemPart();
        system.setMe(this);
        _list[i++] = system;

        func = new FuncPart();
        func.setMe(this);
        _list[i++] = func;

        activity = new ActivityPart();
        activity.setMe(this);
        _list[i++] = activity;

        role = new RolePart();
        role.setMe(this);
        _list[i++] = role;

        scene = new ScenePart();
        scene.setMe(this);
        _list[i++] = scene;

        character = new CharacterPart();
        character.setMe(this);
        _list[i++] = character;

        social = new SocialPart();
        social.setMe(this);
        _list[i++] = social;

        bag = new BagPart();
        bag.setMe(this);
        _list[i++] = bag;

        mail = new MailPart();
        mail.setMe(this);
        _list[i++] = mail;

        quest = new QuestPart();
        quest.setMe(this);
        _list[i++] = quest;

        guide = new GuidePart();
        guide.setMe(this);
        _list[i++] = guide;

        friend = new FriendPart();
        friend.setMe(this);
        _list[i++] = friend;

        equip = new EquipPart();
        equip.setMe(this);
        _list[i++] = equip;

        team = new TeamPart();
        team.setMe(this);
        _list[i++] = team;

        union = new UnionPart();
        union.setMe(this);
        _list[i++] = union;

        achievement = new AchievementPart();
        achievement.setMe(this);
        _list[i++] = achievement;

        pet = new PetPart();
        pet.setMe(this);
        _list[i++] = pet;
    }
예제 #24
0
	public bool HasPart(CharacterPart part) {
		return part == parts[0] || part == parts[1] || part == parts[2] || part == parts[3];
	}
예제 #25
0
 public ClothItem(CharacterPart Part, CharacterType Type)
 {
     part = Part;
     type = Type;
 }
예제 #26
0
	public bool HasCategory(CharacterPart part) {
		for (int i = 0; i < _parts.Count; i++) {
			if (part.category == _parts[i].category) return true;
		}
		return false;
	}
예제 #27
0
 //! Get part prefab name.
 public string PartPrefab(CharacterPart Part, CharacterGroup Group, CharacterType Type)
 {
     return characterParts[Part][Group][(int)Type].prefab;
 }