/// <summary> /// 设置玩家位置 /// <para>只支持以阻塞形式调用</para> /// </summary> /// <param name="sceneName">场景名,为null或者为空则代表不改变场景</param> /// <param name="faceTo">面向位置</param> /// <param name="pos">新的位置</param> /// <returns>当前事件Id</returns> public int SetPlayerPos(string sceneName, Vector2Int pos, Actor.Face faceTo) { _actionList.Add(new ScriptAction("SetPlayerPos") { onStart = () => { SceneManager.sceneLoaded += (arg0, arg1) => { GameMapManager.gameMapManager.Fader.FadeIn(); GameMapManager.gameMapManager.player.GridTransform.position = pos; GameMapManager.gameMapManager.player.faceTo = faceTo; }; GameMapManager.gameMapManager.Fader.FadeOut(); }, onUpdate = () => { if (GameMapManager.gameMapManager.Fader.IsFinished) { //移动到下一个 if (string.IsNullOrEmpty(sceneName)) { GameMapManager.gameMapManager.Fader.FadeIn(); return(true); } ++_runPos; GameMapManager.gameMapManager.SwitchToScene(sceneName); } return(false); } }); return(_actionList.Count - 1); }
/// <summary> /// 改变面向方向 /// </summary> /// <param name="actor">角色</param> /// <param name="face">面向</param> /// <returns>当前事件Id</returns> public int ChangeFaceTo(Actor actor, Actor.Face face) { _actionList.Add(new ScriptAction("ChangeFaceTo") { onStart = () => { actor.faceTo = face; } }); return(_actionList.Count - 1); }