コード例 #1
0
    void AddStepUpdate()
    {
        lastAddTime += Time.deltaTime;
        if (lastAddTime < addTime)
        {
            return;
        }

        int count = steps.Count - 1;

        for (int i = count; i >= 0; i--)
        {
            if (steps[i] == null)
            {
                steps.RemoveAt(i);
            }
        }

        if (steps.Count >= maxCount)
        {
            return;
        }

        Rect gamerect = InGameManager.GetInstance().GetGameRect();

        float y    = InGameManager.GetInstance().role.transform.position.y + 2;
        float rand = Random.Range(0f, gamerect.y + gamerect.height - y - 2);

        InGameBaseObj obj = AddItem("InGameStep", y + rand);

        steps.Add(obj);

        lastAddTime = 0;
    }
コード例 #2
0
    public void TouchMove(Vector3 pos)
    {
        float rate = -(pos.x - Screen.width / 2) / 300f;

        if (rate > 1.5f)
        {
            rate = 1.5f;
        }
        if (rate < -1.5f)
        {
            rate = -1.5f;
        }

        float rotate = rate * 45;

        InGameRole role = InGameManager.GetInstance().role;

        for (int i = 0; i < objList.Count; i++)
        {
            InGameBaseObj obj = objList[i];
            if (obj == null || obj.IsDie())
            {
                continue;
            }

            float disrate = Mathf.Abs(role.transform.position.z - obj.transform.position.z) / (GameConst.GAME_STEP_INTERVAL * 3);

            disrate = 1 - Mathf.Min(disrate, 1f);

            obj.transform.rotation = Quaternion.Euler(new Vector3(0, 0, rotate * disrate));
        }
    }
コード例 #3
0
ファイル: Skill300002.cs プロジェクト: LiuFeng1011/Diablo
    bool HitGameObj(InGameBaseObj baseobj)
    {
        if (baseobj.instanceId == this.instanceId)
        {
            return(false);
        }
        if (baseobj.GetObjType() != enObjType.character)
        {
            return(false);
        }
        if (!source.IsEnemy(baseobj))
        {
            return(false);
        }

        InGameBaseCharacter character = (InGameBaseCharacter)baseobj;


        character.Hurt(source,
                       source.GetAtkForce(),
                       source.propertys.GetProperty(enCharacterProperty.comborate),
                       source.propertys.GetProperty(enCharacterProperty.comboval),
                       false);
        Debug.Log(baseobj.gameObject.name);
        SetDie(true);

        return(true);
    }
コード例 #4
0
    void AddSawUpdate()
    {
        addSawTime -= Time.deltaTime;
        if (addSawTime > 0)
        {
            return;
        }
        addSawTime = Random.Range(MAX_ADD_SAW_TIME, MAX_ADD_SAW_TIME * 2);

        Rect gamerect = InGameManager.GetInstance().GetGameRect();

        float  rand = Random.Range(0f, 1f);
        string name;

        if (rand < 0.5f)
        {
            name = "InGameSaw";
        }
        else
        {
            name = "InGameElastic";
        }
        InGameBaseObj item = AddItem(name, gamerect.y + gamerect.height + 1);

        float randScale = Random.Range(1f, 1.8f);

        item.transform.localScale = new Vector3(randScale, randScale, 1);
    }
コード例 #5
0
 public override bool HandleFuntion(InGameBaseObj obj)
 {
     Debug.Log("MapGateway HandleFuntion :targetid : " + targetid);
     GameGlobal.selLevelConfId = targetid;
     (new EventChangeScene(GameSceneManager.SceneTag.Game)).Send();
     return(false);
 }
コード例 #6
0
    public void Update()
    {
        AddStepUpdate();

        for (int i = 0; i < objList.Count; i++)
        {
            InGameBaseObj obj = objList[i];
            if (obj.IsDie())
            {
                delList.Add(obj);
            }
            else
            {
                obj.ObjUpdate();
            }
        }

        for (int i = 0; i < delList.Count; i++)
        {
            InGameBaseObj obj = delList[i];
            objList.Remove(obj);
            obj.Die();
        }
        delList.Clear();

        if (addList.Count > 0)
        {
            objList.AddRange(addList);
            addList.Clear();
        }
    }
コード例 #7
0
    public static void SetObjPos(GameObject obj, Vector3 pos)
    {
        InGameBaseObj ingameobj = obj.GetComponent <InGameBaseObj>();

        if (ingameobj == null)
        {
            return;
        }
        if (ingameobj.GetObjType() != InGameBaseObj.enObjType.map)
        {
            return;
        }
        Vector2 mappos = GameCommon.GetMapPos(pos);

        obj.transform.position = GameCommon.GetWorldPos(mappos);

        MapObjConf conf = ConfigManager.GetEditorMapObjConfManager().map[ingameobj.confid];

        if (conf == null)
        {
            return;
        }
        GameCommon.SetObjZIndex(obj, conf.depth);
        return;
        //MapEditor me = GameObject.Find("levelOption").transform.GetComponent<MapEditor>();

        //if (me == null)
        //{
        //    EditorUtility.DisplayDialog("ERROR", "Cant't find the 'levelOption' !!", "ENTRY");
        //    return;
        //}
    }
コード例 #8
0
    public virtual void StartAction(InGameBaseObj target, Vector3 targetPos, int dis)
    {
        astarDis = dis;
        Vector3 _targetMapPos = GameCommon.GetMapPos(targetPos);

        if (_targetMapPos == targetMapPos)
        {
            return;
        }

        Vector2        startPos = GameCommon.GetMapPos(parent.transform.position);
        MazeMapManager gameMap  = InGameManager.GetInstance().inGameLevelManager.gameMap;
        List <Vector2> _path    = astar.StratAStar(
            gameMap.astarArray,
            startPos,
            GameCommon.GetMapPos(targetPos),
            dis);

        if (_path.Count <= 0)
        {
            return;
        }
        HandlePath(startPos, _path);
        path = _path;

        isaction       = true;
        this.target    = target;
        this.targetPos = targetPos;
        targetMapPos   = _targetMapPos;
        atkTime        = 0;
        state          = ActionState.move;
    }
コード例 #9
0
    //对敌人造成了伤害,在这里处理吸血等状态
    public void AtkHurt(InGameBaseObj source, int val)
    {
        float pro      = propertys.GetProperty(enCharacterProperty.steallife) / 100f;
        float stealval = val * pro;

        this.ChangeLife(source, (int)stealval, false);
    }
コード例 #10
0
    public InGameBaseObj AddObj(string id)
    {
        InGameBaseObj objscript = MSBaseObject.CreateById(id) as InGameBaseObj;

        addList.Add(objscript);
        return(objscript);
    }
コード例 #11
0
    public void AddScores(int score, bool iscombo, InGameBaseObj source)
    {
        int s = score;

        //if(iscombo){
        //    combo++;
        //    scores += combo;
        //    s = combo;
        //}else {
        //    combo = 0;
        //    scores += score;
        //}
        scores += score;
        InGameManager.GetInstance().inGameUIManager.AddScores(source.transform.position, s, scores, iscombo, true);
        //InGameManager.GetInstance().inGameColorManager.SetColor((float)score * (iscombo ? 1f /* ((float)combo * 0.3f)*/ : 0.1f  ));

        //Vector3[] ps = {
        //    source.transform.position,
        //    new Vector3(0,source.transform.position.y + source.transform.position.x /*Random.Range(8f,15f)*/,0),
        //                InGameManager.GetInstance().inGameUIManager.gamePadManager.comboLabelPos -
        //                new Vector3(0,Random.Range(8f,15f),0),
        //                InGameManager.GetInstance().inGameUIManager.gamePadManager.comboLabelPos
        //            };
        //ComboFlyObj.Create(ps);
    }
コード例 #12
0
    public void TouchToPlane(Vector3 pos)
    {
        Ray ray = InGameManager.GetInstance().gamecamera.ScreenPointToRay(pos);

        RaycastHit hitInfo;

        if (Physics.Raycast(ray, out hitInfo, 200, LayerMask.GetMask("GameObj")))
        {
            GameObject    gameObj = hitInfo.collider.gameObject;
            InGameBaseObj obj     = gameObj.GetComponent <InGameBaseObj>();
            if (obj != null)
            {
                (new EventData(EventID.EVENT_GAME_TOUCH_OBJ)).AddData(obj).Send();
                return;
            }
        }

        if (Physics.Raycast(ray, out hitInfo, 200, LayerMask.GetMask("TouchPlane")))
        {
            GameObject gameObj  = hitInfo.collider.gameObject;
            Vector3    hitPoint = hitInfo.point;

            (new EventGameTouchGround(hitPoint)).Send();
        }
    }
コード例 #13
0
    //
    public override bool Hurt(InGameBaseObj obj)
    {
        MapObjConf conf = ConfigManager.mapObjConfManager.map[this.confid];

        InGameManager.GetInstance().inGameLevelManager.gameMap.DelMapObj(transform.position, conf);
        transform.position = new Vector3(-9999, -9999, 0);
        return(true);
    }
コード例 #14
0
    public virtual void StopAction()
    {
        isaction = false;

        parent.SetAnimatorState(InGameBaseCharacter.AnimatorState.Idle, 1);
        atkTime      = 0;
        target       = null;
        targetMapPos = Vector3.zero;
        state        = ActionState.non;
    }
コード例 #15
0
ファイル: Skill300002.cs プロジェクト: LiuFeng1011/Diablo
    //private void OnCollisionEnter(Collision collision)
    //{
    //    HitObj(collision.gameObject);
    //}

    //private void OnTriggerEnter(Collider collision)
    //{
    //    HitObj(collision.gameObject);
    //}

    void HitObj(GameObject obj)
    {
        InGameBaseObj baseobj = obj.GetComponent <InGameBaseObj>();

        if (baseobj == null)
        {
            return;
        }

        HitGameObj(baseobj);
    }
コード例 #16
0
    public InGameBaseObj AddObj(InGameBaseObj.enObjType type)
    {
        GameObject obj = Resources.Load(InGameBaseObj.ObjResourceName[(int)type]) as GameObject;

        obj = MonoBehaviour.Instantiate(obj);

        InGameBaseObj objscript = obj.GetComponent <InGameBaseObj>();

        objList.Add(objscript);
        objscript.Init();
        objscript.ObjUpdate();
        return(objscript);
    }
コード例 #17
0
    public InGameBaseObj AddSkill(int skill, enMSCamp camp)
    {
        gameObjInstanceId++;
        SkillConf  conf = ConfigManager.skillConfManager.dataMap[skill];
        GameObject obj  = Resources.Load(conf.filepath) as GameObject;

        obj = InGameManager.Instantiate(obj);
        InGameBaseObj objscript = obj.GetComponent <InGameBaseObj>();

        objscript.Init(gameObjInstanceId, skill, camp);
        addList.Add(objscript);
        return(objscript);
    }
コード例 #18
0
    private void OnTriggerEnter(Collider other)
    {
        InGameBaseObj obj = other.transform.GetComponent <InGameBaseObj>();

        if (obj == null)
        {
            Debug.Log("cant find InGameBaseObj : " + other.gameObject.name);
            return;
        }
        if (obj.mytype == enObjType.role)
        {
            isstop = true;
            childObj.GetComponent <Renderer>().material = m_light;
        }
    }
コード例 #19
0
    public InGameBaseObj AddObj(int objid, enMSCamp camp)
    {
        gameObjInstanceId++;

        CharacterConf conf = ConfigManager.characterConfManager.dic[objid];
        GameObject    obj  = Resources.Load(conf.prefabName) as GameObject;

        obj = MonoBehaviour.Instantiate(obj);

        InGameBaseObj objscript = obj.GetComponent <InGameBaseObj>();

        objscript.Init(gameObjInstanceId, objid, camp);
        addList.Add(objscript);
        return(objscript);
    }
コード例 #20
0
ファイル: ObjAtkManager.cs プロジェクト: LiuFeng1011/Diablo
    public override void StartAction(InGameBaseObj target, Vector3 targetPos, int dis)
    {
        if (state == AtkState.atkbegin || state == AtkState.atkend)
        {
            return;
        }

        base.StartAction(target, targetPos, dis);

        atkTime = 0;

        //Vector3 v = (target.transform.position - parent.transform.position).normalized;
        //parent.transform.forward = v;

        state = AtkState.move;
    }
コード例 #21
0
    public float GetAtkDis(InGameBaseObj target)
    {
        //float ret = boxSize.x + 0.3f;
        //if(target.GetObjType() == enObjType.character){
        //    ret += ((InGameBaseCharacter)target).boxSize.x;
        //    ret += this.conf.atkdis;
        //}

        if (target.camp == enMSCamp.en_camp_item)
        {
            return((float)target.ActionDistance() + 0.2f);
        }

        float ret = this.conf.atkdis + 1.3f;

        return(ret);
    }
コード例 #22
0
    InGameBaseObj AddItem(string id, float height)
    {
        InGameBaseObj item = InGameManager.GetInstance().inGameLevelManager.AddObj(id);

        float randScale = 1.8f - InGameManager.GetInstance().gameScale * 1f;

        item.transform.localScale = new Vector3(randScale, randScale, 1);

        Rect gamerect = InGameManager.GetInstance().GetGameRect();

        //add item
        item.transform.position = new Vector3(gamerect.x + Random.Range(0, gamerect.width - 2) + 1,
                                              height + randScale / 2);

        item.Init();
        return(item);
    }
コード例 #23
0
    static void ForeachObjAndSave(GameObject obj)
    {
        foreach (Transform child in obj.transform)
        {
            InGameBaseObj gameobj = child.GetComponent <InGameBaseObj>();

            if (gameobj == null)
            {
                continue;
            }
            gameobj.parentid   = child.parent.GetInstanceID();
            gameobj.instanceId = child.GetInstanceID();

            msobjlist.Add(gameobj);

            ForeachObjAndSave(child.gameObject);
        }
    }
コード例 #24
0
    public void Revive()
    {
        for (int i = 0; i < objList.Count; i++)
        {
            InGameBaseObj obj = objList[i];

            if (Mathf.Abs(obj.transform.position.z - (InGameManager.GetInstance().role.targetz + GameConst.GAME_STEP_INTERVAL)) < 0.5f)
            {
                obj.transform.position = new Vector3(0f, obj.transform.position.y, obj.transform.position.z);

                obj.transform.localScale = new Vector3(4f, obj.transform.localScale.y, obj.transform.localScale.z);
            }
            else if (Mathf.Abs(obj.transform.position.z - InGameManager.GetInstance().role.targetz) < 0.5f)
            {
                obj.SetDie();
            }
        }
    }
コード例 #25
0
ファイル: InGameRole.cs プロジェクト: LiuFeng1011/ToTarget
    private void OnTriggerEnter(Collider other)
    {
        if (hit)
        {
            return;
        }
        Debug.Log(other.gameObject.name);
        InGameBaseObj obj = other.transform.GetComponent <InGameBaseObj>();

        if (obj == null)
        {
            Debug.Log("cant find InGameBaseObj : " + other.gameObject.name);
            return;
        }
        if (obj.mytype == enObjType.step)
        {
            //if(!jump.isfull) JumpFinished();
            hit = true;

            //combo
            if (Mathf.Abs(transform.position.x - obj.transform.position.x) < GameConst.comboDis &&
                Mathf.Abs(transform.position.z - obj.transform.position.z) < GameConst.comboDis)
            {
                GameObject effect = Resources.Load("Prefabs/Effect/ShowEnemy") as GameObject;
                effect = Instantiate(effect);
                effect.transform.position   = obj.transform.position;
                effect.transform.localScale = new Vector3(obj.transform.localScale.x, obj.transform.localScale.z, obj.transform.localScale.y);

                combo += 1;
                AudioManager.Instance.Play("sound/down_combo");
            }
            else
            {
                combo = 0;
                AudioManager.Instance.Play("sound/down_normal");
            }

            int val = 1 + combo;

            scores += val;
            InGameManager.GetInstance().inGameUIManager.AddScores(transform.position, val, scores, true);
        }
    }
コード例 #26
0
    /// <summary>
    /// Hurt the specified source, val, comborate, comboval and strike.
    /// </summary>
    /// <returns>The hurt.</returns>
    /// <param name="source">Source.</param>
    /// <param name="val">Value.</param>
    /// <param name="comborate">Comborate.</param>
    /// <param name="comboval">Comboval.</param>
    /// <param name="strike">是否穿透攻击.</param>
    public bool Hurt(InGameBaseObj source, int val, float comborate, float comboval, bool strike)
    {
        float overval = val;


        if (UnityEngine.Random.Range(0f, 100f) < propertys.GetProperty(enCharacterProperty.avoid))
        {
            ChangeLifeLabel.CreateChangeLifeLabel(transform.position +
                                                  new Vector3(0, this.boxSize.y + 0.2f, 0), Color.yellow, "闪避");
            return(false);
        }

        bool iscombo = false;

        if (UnityEngine.Random.Range(0f, 100f) < comborate)
        {
            overval += overval * comboval / 100f;
            iscombo  = true;
        }

        if (!strike)
        {
            float armor = propertys.GetProperty(enCharacterProperty.armor) * 0.06f;
            armor    = (armor / (armor + 1));
            overval -= overval * armor;
            if (overval < 0)
            {
                overval = 0;
            }
        }

        float returnval = overval * (propertys.GetProperty(enCharacterProperty.returnhurt) / 100f);

        overval -= returnval;

        ((InGameBaseCharacter)source).ChangeLife(this, -(int)returnval, false);
        ((InGameBaseCharacter)source).AtkHurt(source, (int)overval);

        EventData.CreateEvent(EventID.EVENT_GAME_CHARACTER_HURT).
        AddData(source, this, -(int)overval).Send();

        return(ChangeLife(source, -(int)Math.Ceiling(overval), iscombo));
    }
コード例 #27
0
    public List <InGameBaseObj> GetObjListByDistance(Vector2 pos, float dis)
    {
        getList.Clear();
        for (int i = 0; i < objList.Count; i++)
        {
            InGameBaseObj obj = objList[i];

            if (obj.IsDie())
            {
                continue;
            }

            if (Vector2.Distance(obj.transform.position, pos) < dis)
            {
                getList.Add(obj);
            }
        }
        return(getList);
    }
コード例 #28
0
ファイル: InGameRole.cs プロジェクト: LiuFeng1011/TouchColor
    public void AddScores(int score, bool iscombo, InGameBaseObj source)
    {
        int s = score;

        if (iscombo)
        {
            combo++;
            scores += combo;
            s       = combo;
        }
        else
        {
            combo   = 0;
            scores += score;
        }

        InGameManager.GetInstance().inGameUIManager.AddScores(source.transform.position, s, scores, iscombo, true);
        InGameManager.GetInstance().inGameColorManager.SetColor((float)score * (iscombo ? 1f * ((float)combo * 0.3f) : 0.1f));
    }
コード例 #29
0
    public override void HandleEvent(EventData resp)
    {
        if (role.IsDie()) return;
        switch (resp.eid)
        {
            case EventID.EVENT_GAME_TOUCH_GROUND:
                EventGameTouchGround eve = (EventGameTouchGround)resp;

                role.StartRun(eve.pos);
                break;
            case EventID.EVENT_GAME_TOUCH_OBJ:
                EventData touchobje = (EventData)resp;
                InGameBaseObj obj = (InGameBaseObj) touchobje.sUserData[0];

                if (obj.instanceId != role.instanceId && !obj.IsDie())
                {
                    role.StartAtk(obj);
                }

                break;
            case EventID.EVENT_UI_EQUIP:
                int instanceid = int.Parse(resp.sUserData[0].ToString());
                AddEquip(instanceid);
                EventData.CreateEvent(EventID.EVENT_UI_REFRESH_PACKAGEUI).Send();
                break;
            case EventID.EVENT_UI_DELEQUIP:
                int delinstanceid = int.Parse(resp.sUserData[0].ToString());
                UserDataManager.instance.DelEquip(delinstanceid);
                EventData.CreateEvent(EventID.EVENT_UI_REFRESH_PACKAGEUI).Send();
                break;

            case EventID.EVENT_UI_UNEQUIP:
                int unequipinstanceid = int.Parse(resp.sUserData[0].ToString());
                CancelEquip(unequipinstanceid);
                break;

            case EventID.EVENT_DATA_REFRESHPROPERTY:
                role.ResetAllProperty();
                break;
        }

    }
コード例 #30
0
    public void Init()
    {
        EventManager.Register(this,
                              EventID.EVENT_TOUCH_DOWN, EventID.EVENT_TOUCH_MOVE);
        addCount = (int)(GameConst.GAME_STEP_INTERVAL * 7);

        addStepDis += GameConst.GAME_STEP_INTERVAL;
        for (int i = 0; i < 1; i++)
        {
            InGameBaseObj obj = AddObj(InGameBaseObj.enObjType.step);

            obj.transform.position = new Vector3(0, 0, addStepDis);
            addStepDis            += GameConst.GAME_STEP_INTERVAL;

            InGameStep step = (InGameStep)obj;

            step.RandScale(4, 0);
        }
        AddStepUpdate();
    }