コード例 #1
0
    //设定角色方向
    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);
    }
コード例 #2
0
    static public AniController Get(GameObject go)
    {
        AniController controller = go.GetComponent <AniController>();

        if (controller == null)
        {
            controller = go.AddComponent <AniController>();
        }
        return(controller);
    }
コード例 #3
0
    static public AniController Get(Transform transform)
    {
        AniController controller = transform.GetComponent <AniController>();

        if (controller == null)
        {
            controller = transform.gameObject.AddComponent <AniController>();
        }
        return(controller);
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
    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;
        }
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Wall")
        {
            flip();
        }
        if (collision.tag == "Enemy")
        {
            flip();
        }
        if (collision.tag == "Player")
        {
            print("I can see the player");
            FindObjectOfType <PlayerStats>().takeDamage(damage);

            AniController.SetTrigger("Hit");
            flip();
        }
    }
コード例 #8
0
ファイル: QuestUI.cs プロジェクト: AlayaElla/sangharama
    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());
        }
    }
コード例 #9
0
ファイル: QuestUI.cs プロジェクト: AlayaElla/sangharama
    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);
        }
    }
コード例 #10
0
ファイル: Character.cs プロジェクト: AlayaElla/sangharama
    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");
        }
    }
コード例 #11
0
ファイル: QuestUI.cs プロジェクト: AlayaElla/sangharama
    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;
    }
コード例 #12
0
    // Start is called before the first frame update

    private void Awake()
    {
        _instance = this;
    }
コード例 #13
0
    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);
        }
    }
コード例 #14
0
    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;
        }
    }
コード例 #15
0
 void HideHint()
 {
     HintLayer.SetActive(false);
     AniController.Get(HintLayer).Stop();
 }
コード例 #16
0
 void Start()
 {
     A = GetComponent <AniController>();
 }
コード例 #17
0
 // Start is called before the first frame update
 void Start()
 {
     aniCon      = FindObjectOfType <AniController>();
     entrySystem = FindObjectOfType <Sanoki.Online.EntrySystem>();
 }