private void endJackAi() { if (mNatureAi == null) { throw new Exception("MapCharaJackedAi : AIジャックしてないのにendJackAi呼ばないで"); } mAi = mNatureAi; mNatureAi = null; }
///AIを変更して操作権限をジャックする public MapCharaJackedAi jackAi() { if (mNatureAi != null) { throw new Exception("MapCharaJackedAi : 既に「" + mName + "」はAIジャックされてるから今はジャックできないよ"); } mNatureAi = mAi; mAi = new MapCharaJackedAi(this); return((MapCharaJackedAi)mAi); }
///初期化 public void init(string aAiName, Dictionary <string, List <Sprite> > aSprites, Vector2 aColliderSize, Direction?aDirection = null, string aName = "") { if (mSprites != null) { return; } mSprites = aSprites; mAi = createAi(aAiName); mState = new StandState(this); //名前 mName = aName; gameObject.name = (mName == "") ? "NPC" : mName; //親要素 gameObject.transform.parent = GameObject.Find("mapSpeakers").transform; //向き mDirection = (aDirection == null) ? new Direction(Direction.direction.Down) : (Direction)aDirection; //初期画像 mGifAnimator = MyBehaviour.create <GifAnimator>(); mGifAnimator.transform.parent = gameObject.transform; changeImage("stand" + mDirection.str); mGifAnimator.setInterval(0.2f); mGifAnimator.play(); //当たり判定 BoxCollider2D tCollider = gameObject.AddComponent <BoxCollider2D>(); tCollider.offset = new Vector2(0, ((Vector2)aColliderSize).y / 2); tCollider.size = aColliderSize; //マップ属性 gameObject.AddComponent <MapAttributeBehaviour>().setAttribute(MapBehaviourAttribute.Attribute.character); //rigidbody Rigidbody2D tRigid = gameObject.AddComponent <Rigidbody2D>(); tRigid.bodyType = RigidbodyType2D.Kinematic; //移動コンポーネント mMoveComponent = gameObject.AddComponent <MapBehaviourMoveComponent>(); }
void Start() { mAi = new MapPlayerAi(this); }