//设定角色方向 void SetCharacterVecter(Vector3[] vecs) { //Vector3 target = vecs[vecs.Length - 1] - vecs[0]; float angle = Vector3.Angle(Vector3.right, vecs[vecs.Length - 1] - vecs[0]); if (angle < 45) { AniController.Get(MovePlayer).PlayAniBySkin("right", AniController.AniType.LoopBack, 10); } else if (angle < 135) { if (vecs[vecs.Length - 1].y > vecs[0].y) { AniController.Get(MovePlayer).PlayAniBySkin("up", AniController.AniType.LoopBack, 10); } else { AniController.Get(MovePlayer).PlayAniBySkin("down", AniController.AniType.LoopBack, 10); } } else { AniController.Get(MovePlayer).PlayAniBySkin("left", AniController.AniType.LoopBack, 10); } //Debug.Log("angle: " + angle); }
void CreateHintSprite(int sceneID, Transform t, int type) { //type 2隐藏任务,直接跳过 if (type == 2) { return; } Transform tt = t.Find("hint"); if (tt == null) { GameObject obj = new GameObject(); obj.name = "hint"; obj.transform.SetParent(t, false); if (sceneID == 0) { obj.transform.localPosition = new Vector2(-50, 0); } else if (sceneID == 1) { obj.transform.localPosition = new Vector2(0, 0); } Image img = obj.AddComponent <Image>(); obj.GetComponent <RectTransform>().pivot = new Vector2(0.5f, 0); if (type == 0) { img.color = Color.white; } else if (type == 1) { img.color = Color.blue; } AniController.Get(obj.gameObject).AddSprite(eventHint); AniController.Get(obj.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } else { Image img = tt.GetComponent <Image>(); tt.GetComponent <RectTransform>().pivot = new Vector2(0.5f, 0); if (type == 0) { img.color = Color.white; } else if (type == 1) { img.color = Color.blue; } AniController.Get(tt.gameObject).AddSprite(eventHint); AniController.Get(tt.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } }
void ShowHint() { HintLayer.SetActive(true); AniController.Get(HintLayer).AddSprite(hints); AniController.Get(HintLayer).PlayAni(4, 7, AniController.AniType.Loop, 5); if (Usingdo.talks.Length - 1 == nowindex) { Mask.SetActive(false); islast = true; } }
void InstPlayer(int point) { string actionRoot = "Canvas/Scroll View/Viewport/Content/map/action" + point + "/" + point; Transform root = GameObject.Find(actionRoot).transform; MovePlayer.position = root.position; AniController.Get(MovePlayer).AddSprite(charaModle.GetSkinSprite("boy1"), charaModle.GetSkin("boy1")); AniController.Get(MovePlayer).PlayAniBySkin("down", AniController.AniType.LoopBack, 5); ShowHomeBoard(1); }
public void UpdateQuestUI(int quest, int point) { PlayerInfo.QuestInfo info = PlayerInfo.GetQuestInfo(quest); Transform questButton = QuestListUI.transform.Find(info.ID.ToString()); Slider prograssBar = questButton.transform.Find("progress").GetComponent <Slider>(); Transform hint = questButton.transform.Find("hint"); prograssBar.value = (float)info.Progress / info.Goal; //如果已经完成 if (prograssBar.value >= 1) { hint.gameObject.SetActive(true); AniController.Get(hint.gameObject).AddSprite(hintsprites); hint.GetComponent <Image>().color = Color.green; AniController.Get(hint.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); questManager.PreCheckQuest(PlayerInfo.GetNowscene()); } }
void CreateHintSprite(int sceneID, Transform t) { if (t == null) { return; } Transform tt = t.Find("hint"); if (tt == null) { GameObject obj = new GameObject(); obj.name = "hint"; obj.transform.SetParent(t, false); if (sceneID == 0) { obj.transform.localPosition = new Vector2(-50, 0); } else if (sceneID >= 1) { obj.transform.localPosition = new Vector2(0, 0); } Image img = obj.AddComponent <Image>(); RectTransform rt = obj.GetComponent <RectTransform>(); rt.pivot = new Vector2(0.5f, 0); rt.sizeDelta = new Vector2(70, 70); img.color = Color.green; AniController.Get(obj.gameObject).AddSprite(hintsprites); AniController.Get(obj.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } else { Image img = tt.GetComponent <Image>(); RectTransform rt = tt.GetComponent <RectTransform>(); rt.pivot = new Vector2(0.5f, 0); rt.sizeDelta = new Vector2(70, 70); img.color = Color.green; AniController.Get(tt.gameObject).AddSprite(hintsprites); AniController.Get(tt.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } }
void CreateCharacter(CharacterModle.CharacterInfo c) { int range = Random.Range(0, 2); Vector3 _start = startPiont[range].transform.position; //设定角色出生点 c.startPiont = range; GameObject _char = Instantiate(charPrefab); _char.transform.position = _start; Rigidbody2D rigidbody2d = _char.AddComponent <Rigidbody2D>(); rigidbody2d.isKinematic = true; _char.AddComponent <BoxCollider2D>().isTrigger = true; //Dictionary<string, int[]> _actionList = new Dictionary<string, int[]>(); CharacterModle.Skin skin = new CharacterModle.Skin(); foreach (CharacterModle.Skin s in skinList) { if (s.SkinName == c.Skin) { skin = s; } } AniController.Get(_char).AddSprite(CharacterSprites[c.Skin]); MyCharacterController.Get(_char).Init(c, skin); MyCharacterController.Get(_char).speed = cSpeed; if (c.startPiont == 0) { MyCharacterController.Get(_char).SetTarget("finish2"); } else { MyCharacterController.Get(_char).SetTarget("finish1"); } }
public void AddQustUI(QuestManager.QuestBase quest) { GameObject questButton = Instantiate(QuestButton); questButton.name = quest.ID.ToString(); questButton.transform.SetParent(QuestListUI.transform, false); Image iconImage = questButton.transform.Find("icon").GetComponent <Image>(); Slider prograssBar = questButton.transform.Find("progress").GetComponent <Slider>(); Transform hint = questButton.transform.Find("hint"); iconImage.sprite = Materiral.GetIconByName(quest.Smallicon); prograssBar.value = (float)PlayerInfo.GetQuestProgress(quest.ID) / quest.QuestComplete.Num; //如果已经完成 if (prograssBar.value >= 1) { hint.gameObject.SetActive(true); AniController.Get(hint.gameObject).AddSprite(hintsprites); hint.GetComponent <Image>().color = Color.green; AniController.Get(hint.gameObject).PlayAni(0, 3, AniController.AniType.Loop, 5); } EventTriggerListener.Get(questButton).onClick = OpenQuestBoard; }
void HideHint() { HintLayer.SetActive(false); AniController.Get(HintLayer).Stop(); }
void MoveVertical() { if (actionStep == 3) { return; } //竖向 if (Mathf.Abs(transform.position.y - targetVertor.y) > 0.01f) { float _m = transform.position.y - targetVertor.y; //设置状态 if (actionStep == 0) { //设置动作 if (_m > 0) { AniController.Get(transform).PlayAniCanBreak(skin.ActionList["down"][0], skin.ActionList["down"][1], AniController.AniType.LoopBack, 10); } else if (_m < 0) { AniController.Get(transform).PlayAniCanBreak(skin.ActionList["up"][0], skin.ActionList["up"][1], AniController.AniType.LoopBack, 10); } //重置动画播放百分比 actiontimer = 0; //改变状态 actionStep = 1; } //移动 actiontimer += Time.deltaTime; float _totaltime = Mathf.Abs((startVertor.y - targetVertor.y)) / speed; float movedis = Mathf.Lerp(startVertor.y, targetVertor.y, actiontimer / _totaltime); transform.position = new Vector3(transform.position.x, movedis, transform.position.z); /* * if (_m > 0) * { * transform.Translate(new Vector3(0, -speed * Time.deltaTime, 0)); * } * else * { * transform.Translate(new Vector3(0, speed * Time.deltaTime, 0)); * } */ } //横向 else { float _m = transform.position.x - targetVertor.x; //设置状态 if (actionStep == 1) { //设置x轴位置 if (transform.position.y != targetVertor.y) { transform.position = new Vector2(transform.position.x, targetVertor.y); } //设置动作 if (_m > 0) { AniController.Get(transform).PlayAniCanBreak(skin.ActionList["left"][0], skin.ActionList["left"][1], AniController.AniType.LoopBack, 10); } else if (_m < 0) { AniController.Get(transform).PlayAniCanBreak(skin.ActionList["right"][0], skin.ActionList["right"][1], AniController.AniType.LoopBack, 10); } //重置动画播放百分比 actiontimer = 0; //改变状态 actionStep = 2; } //移动 actiontimer += Time.deltaTime; float _totaltime = Mathf.Abs((startVertor.x - targetVertor.x)) / speed; float movedis = Mathf.Lerp(startVertor.x, targetVertor.x, actiontimer / _totaltime); transform.position = new Vector3(movedis, transform.position.y, transform.position.z); /* * if (_m > 0) * { * transform.Translate(new Vector3(-speed * Time.deltaTime, 0, 0)); * } * else * { * transform.Translate(new Vector3(speed * Time.deltaTime, 0, 0)); * } */ } //如果到达终点 if (Mathf.Abs(transform.position.x - targetVertor.x) < 0.01f && actionStep == 2) { //设置y轴位置 if (transform.position.y != targetVertor.y) { transform.position = new Vector2(transform.position.x, targetVertor.y); } actionStep = 3; } }
void MovePath() { //如果有采集、回家图标,则关闭采集,回家图标 CloseMineIcon(); CloseHomeIcon(); string root = "/Canvas/Scroll View/Viewport/Content/map/pathList/"; string pathline = ""; Transform[] _ts = new Transform[0]; //如果到达终点则打断 if (playerPoints.Nowpoint == playerPoints.Targetpoint) { //增加路点次数信息 PlayerInfo.AddMapInfo(playerPoints.Nowpoint); PlayerInfo.SetNowscene(playerPoints.Nowpoint); //检测触发事件 if (eventmanager.CheckEventList(ChatEventManager.ChatEvent.EventTypeList.Arrive, true)) { eventmanager.StartStory(); } else { questManager.CheckQuestListWithArrive(playerPoints.Targetpoint); questManager.IsArriveWaitingCheckPoint(playerPoints.Targetpoint); eventmanager.PreCheckEventList(1); questManager.PreCheckQuest(1); } state = MoveState.Stay; AniController.Get(MovePlayer).PlayAniBySkin("down", AniController.AniType.LoopBack, 5); //关闭路点提示 ClosePathPoint(); CloseMovePathLine(); movePathLine.Clear(); if (playerPoints.Targetpoint != 1) { //显示采集图标 ShowMineIcon(playerPoints.Targetpoint); return; } else { ShowHomeBoard(1); return; } } //找到移动的路径 for (int i = 0; i <= Bestpaths.Count - 2; i++) { //根据方向排序 if ((int)Bestpaths[i] == playerPoints.Nowpoint) { if ((int)Bestpaths[i + 1] > (int)Bestpaths[i]) { pathline = "pathLine_" + Bestpaths[i].ToString() + "_" + Bestpaths[i + 1].ToString(); Transform t = transform.Find(root + pathline); if (t != null) { _ts = new Transform[t.childCount]; for (int j = 0; j < t.childCount; j++) { _ts[j] = t.GetChild(j); } } else { Debug.Log("can't find pathline:" + root + pathline); } } else { pathline = "pathLine_" + Bestpaths[i + 1].ToString() + "_" + Bestpaths[i].ToString(); Transform t = transform.Find(root + pathline); if (t != null) { _ts = new Transform[t.childCount]; for (int j = 0; j < t.childCount; j++) { _ts[j] = t.GetChild(t.childCount - 1 - j); } } else { Debug.Log("can't find pathline:" + root + pathline); } } playerPoints.Nextpoint = (int)Bestpaths[i + 1]; break; } } //移动方法 if (_ts.Length != 0) { playerPoints.Nowpoint = playerPoints.Nextpoint; Transform _map = transform.Find("/Canvas/Scroll View/Viewport/Content/map"); Vector3[] vecs = new Vector3[_ts.Length + 2]; for (int i = 0; i < _ts.Length; i++) { //vecs[i + 1] = _ts[i].position - _map.position; vecs[i + 1] = _ts[i].position; } vecs[0] = vecs[1]; vecs[vecs.Length - 1] = vecs[vecs.Length - 2]; state = MoveState.Moving; LTSpline cr = new LTSpline(vecs); float time = cr.distance / 5; LeanTween.move(MovePlayer.gameObject, cr, time).setOnComplete(() => { playerPoints.Nowpoint = playerPoints.Nextpoint; MovePath(); }); SetCharacterVecter(vecs); } }