facebook twitter hatena line email

「Unity/おすすめアセット/HeroEditor4D」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(jsonデータ読み込み)
(文字から装備を設定)
行43: 行43:
 
             if (entry.FullName.Equals(fullName)) {
 
             if (entry.FullName.Equals(fullName)) {
 
                 this.EquipArmor(entry);
 
                 this.EquipArmor(entry);
 +
                return;
 
             }
 
             }
 
         }
 
         }
行54: 行55:
 
             {
 
             {
 
                 this.EquipHelmet(entry);
 
                 this.EquipHelmet(entry);
 +
                return;
 
             }
 
             }
 
         }
 
         }
行65: 行67:
 
             {
 
             {
 
                 this.EquipShield(entry);
 
                 this.EquipShield(entry);
 +
                return;
 
             }
 
             }
 
         }
 
         }
行76: 行79:
 
             {
 
             {
 
                 this.EquipMeleeWeapon1H(entry);
 
                 this.EquipMeleeWeapon1H(entry);
 +
                return;
 
             }
 
             }
 
         }
 
         }

2021年6月12日 (土) 04:32時点における版

HeroEditor4D

https://assetstore.unity.com/packages/2d/characters/fantasy-heroes-4-directional-character-editor-147364/reviews?locale=ja-JP

エディタの使い方と作成したキャラの配置

  1. HeroEditor4Dをインストールする
  2. Assets/HeroEditor4D/FantasyHeroes/CharacterEditor [FH]を開き、"Save/Prefab"を押し、Humanという名前でファイルを保存する。
  3. シーンを新たに作り、以下をオブジェクトを、作ったシーンに、コピーし、Humanもシーン内に移動する。
CharacterControls
CharacterEquipment
CharacterAppearance
  1. 実行すれば、キャラが動く。

顔を色を変更

using Assets.HeroEditor4D.Common.CharacterScripts;

Character4D character4D = GameObject.Find("Human").GetComponent<Character4D>();
character4D.BodyColor = new Color(0f, 0.46f, 0.17f); // ゾンビ系
character4D.BodyColor = new Color(1f, 0.784f, 0.470f); // 肌色
character4D.OnValidate();

jsonデータ読み込み

string json = @"
{'Body':'Basic/HumanPants#FFC878FF','Ears':'Basic/Human#FFC878FF','Hair':'Basic/Default','Beard':null,'Helmet':'Basic/AlchemistClothes','Armor':'Basic/TemplarArmor','PrimaryWeapon':'Basic/BlackSteelAxe','SecondaryWeapon':null,'Cape':null,'Back':null,'Shield':'Basic/Bloodmoon','Bow':null,'Crossbow':'Basic/BlackSteelAxe','WeaponType':'Melee1H','Expression':'Default','HideEars':'True','CropHair':'False','Makeup':null,'Mask':null,'Earrings':null,'Expression.Default.Eyebrows':'Basic/Eyebrows7','Expression.Default.Eyes':'Emoji/AngryEyes1#00C8FFFF','Expression.Default.Mouth':'Basic/Default','Expression.Angry.Eyebrows':'Emoji/AngryEyebrowns','Expression.Angry.Eyes':'Emoji/AngryEyes3#00C8FFFF','Expression.Angry.Mouth':'Emoji/AngryMouth1','Expression.Dead.Eyebrows':'Emoji/DeadEyebrowns1','Expression.Dead.Eyes':'Emoji/DeadEyes3#00C8FFFF','Expression.Dead.Mouth':'Emoji/DeadMouth1','Expression.Happy.Eyebrows':'Emoji/DeadEyebrowns1','Expression.Happy.Eyes':'Emoji/HappyEyes#00C8FFFF','Expression.Happy.Mouth':'Basic/Smirk'}
";
character4D.LoadFromJson(json, silent: false);

文字から装備を設定

   character4D.EquipArmorName("Basic/WallKeeperArmor");
   character4D.EquipHelmetName("Basic/WallKeeperArmor");
   character4D.EquipWeaponName("Basic/EvilHammer");
   character4D.EquipShieldName("Basic/RustyGuardianShield");

    // 文字列の名前を渡して鎧設定
    public void EquipArmorName(string fullName) {
        foreach (SpriteGroupEntry entry in this.SpriteCollection.Armor) {
            if (entry.FullName.Equals(fullName)) {
                this.EquipArmor(entry);
                return;
            }
        }
    }
    // 文字列の名前を渡して甲設定
    public void EquipHelmetName(string fullName)
    {
        foreach (SpriteGroupEntry entry in this.SpriteCollection.Armor)
        {
            if (entry.FullName.Equals(fullName))
            {
                this.EquipHelmet(entry);
                return;
            }
        }
    }
    // 文字列の名前を渡して盾設定
    public void EquipShieldName(string fullName)
    {
        foreach (SpriteGroupEntry entry in this.SpriteCollection.Shield)
        {
            if (entry.FullName.Equals(fullName))
            {
                this.EquipShield(entry);
                return;
            }
        }
    }
    // 文字列の名前を渡して武器設定
    public void EquipWeaponName(string fullName)
    {
        foreach (SpriteGroupEntry entry in this.SpriteCollection.MeleeWeapon1H)
        {
            if (entry.FullName.Equals(fullName))
            {
                this.EquipMeleeWeapon1H(entry);
                return;
            }
        }
    }

キャラクタの向き

Character4D humanCharacter4D = GameObject.Find("Human").GetComponent<Character4D>();
humanCharacter4D.SetDirection(Vector2.up); // 上
humanCharacter4D.SetDirection(Vector2.down); // 下
humanCharacter4D.SetDirection(Vector2.left); // 左
humanCharacter4D.SetDirection(Vector2.right); // 右

アクション

humanCharacter4D.AnimationManager.Attack(); // 攻撃(A)
humanCharacter4D.AnimationManager.SecondaryShot(); // (F) 上向き下向きだと機能しない?
humanCharacter4D.AnimationManager.SetState(CharacterState.Idle); // アイドル状態(I)
humanCharacter4D.AnimationManager.SetState(CharacterState.Ready); // 準備(E)
humanCharacter4D.AnimationManager.SetState(CharacterState.Walk); // 歩く(W)
humanCharacter4D.AnimationManager.SetState(CharacterState.Run); // 走る(R)
humanCharacter4D.AnimationManager.SetState(CharacterState.Jump); // 飛ぶ(J)
humanCharacter4D.AnimationManager.SetState(CharacterState.Climb); // しゃがむ?(C)
humanCharacter4D.AnimationManager.Die(); // 倒れる(D)
humanCharacter4D.AnimationManager.Hit(); // ダメージ(H)

iOSビルド時

以下エラーが発生するが、

Assets/HeroEditor4D/FantasyInventory/Scripts/Data/Property.cs(6,7): error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?)

Newtonsoft.Json.dllを、Pluginsの下に移動すると直る。

mv HeroEditor4D/Common/Newtonsoft/Newtonsoft.Json.dll ./Plugins

CharacterStateの型エラーが起こるとき

以下エラーが起こる

Assets/Scripts/SampleScene.cs(206,52): error CS1503: Argument 1: cannot convert from 'CharacterState' to 'Assets.HeroEditor4D.Common.CharacterScripts.CharacterState'

namespaceがなく、CharacterStateが他のlibrary(PhotonUnityNetwork)とかぶってるので、 CharacterState.Idleなどを Assets.HeroEditor4D.Common.CharacterScripts.CharacterState.Idleなどへ置換すれば良い。