Esempio n. 1
0
    protected List <Vector2> findWeaponPosList(WeaponAnim anim)
    {
        List <WeaponFrameData> frameDataList;

        mSQLiteWeaponFrame.query(anim.mID, anim.mDirection, anim.mAction, out frameDataList);
        if (frameDataList.Count != 1)
        {
            logError("huamn frame error!");
            return(null);
        }
        List <Vector2> posList = new List <Vector2>();

        for (int j = 0; j < frameDataList[0].mFrameCount; ++j)
        {
            // 由于坐标系不一致,所以需要将Y方向偏移取反
            posList.Add(new Vector2(frameDataList[0].mPosX[j], -frameDataList[0].mPosY[j]));
        }
        return(posList);
    }
Esempio n. 2
0
    protected void onRefreshClick(GameObject obj)
    {
        // 从数据库中查找
        mClothResourceList.Clear();
        mWeaponResourceList.Clear();
        List <ClothData> clothDataList;

        mSQLiteCloth.queryAll(out clothDataList);
        int clothCount = clothDataList.Count;

        for (int i = 0; i < clothCount; ++i)
        {
            HumanAtlas clothAtlas = new HumanAtlas();
            clothAtlas.mAtlasName   = clothDataList[i].mResource;
            clothAtlas.mAnimSetList = new Dictionary <int, Dictionary <string, HumanAnim> >();
            var animList = clothAtlas.mAnimSetList;
            List <ClothFrameData> frameDataList;
            mSQLiteClothFrame.query(clothDataList[i].mID, out frameDataList);
            int frameDataCount = frameDataList.Count;
            for (int j = 0; j < frameDataCount; ++j)
            {
                HumanAnim anim = new HumanAnim();
                anim.mID         = frameDataList[j].mID;
                anim.mAction     = frameDataList[j].mAction;
                anim.mDirection  = frameDataList[j].mDirection;
                anim.mTextureSet = frameDataList[j].mAction + "_dir" + frameDataList[j].mDirection;
                if (!animList.ContainsKey(anim.mDirection))
                {
                    animList.Add(anim.mDirection, new Dictionary <string, HumanAnim>());
                }
                if (!animList[anim.mDirection].ContainsKey(anim.mAction))
                {
                    animList[anim.mDirection].Add(anim.mAction, anim);
                }
            }
            mClothResourceList.Add(clothAtlas);
        }
        List <WeaponData> weaponDataList;

        mSQLiteWeapon.queryAll(out weaponDataList);
        int weaponCount = weaponDataList.Count;

        for (int i = 0; i < weaponCount; ++i)
        {
            WeaponAtlas weaponAtlas = new WeaponAtlas();
            weaponAtlas.mAtlasName   = weaponDataList[i].mResource;
            weaponAtlas.mAnimSetList = new Dictionary <int, Dictionary <string, WeaponAnim> >();
            var animList = weaponAtlas.mAnimSetList;
            List <WeaponFrameData> frameDataList;
            mSQLiteWeaponFrame.query(weaponDataList[i].mID, out frameDataList);
            int frameDataCount = frameDataList.Count;
            for (int j = 0; j < frameDataCount; ++j)
            {
                WeaponAnim anim = new WeaponAnim();
                anim.mID         = frameDataList[j].mID;
                anim.mAction     = frameDataList[j].mAction;
                anim.mDirection  = frameDataList[j].mDirection;
                anim.mTextureSet = frameDataList[j].mAction + "_dir" + frameDataList[j].mDirection;
                if (!animList.ContainsKey(anim.mDirection))
                {
                    animList.Add(anim.mDirection, new Dictionary <string, WeaponAnim>());
                }
                if (!animList[anim.mDirection].ContainsKey(anim.mAction))
                {
                    animList[anim.mDirection].Add(anim.mAction, anim);
                }
            }
            mWeaponResourceList.Add(weaponAtlas);
        }
        mHumanCount.setLabel("数量:0/" + mClothResourceList.Count);
        // 设置
        setCurClothAtlas(0);
        setCurWeaponAtlas(0);
    }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        if (moving)
        {
            walkAnim          += Time.deltaTime * walkAnimSpeed;
            body.localPosition = new Vector3(
                walkBobLR * -Mathf.Cos(walkAnim),
                Mathf.Abs(walkBobUD * Mathf.Sin(walkAnim)),
                0f);
            body.localEulerAngles = new Vector3(0f, 0f,
                                                Mathf.Cos(walkAnim) * walkWobble);
        }
        else
        {
            idleAnim          += Time.deltaTime * idleAnimSpeed;
            body.localPosition = new Vector3(
                idleBobLR * -Mathf.Cos(idleAnim),
                Mathf.Abs(idleBobUD * Mathf.Sin(idleAnim)),
                0f);
            body.localEulerAngles = new Vector3(0f, 0f,
                                                Mathf.Cos(idleAnim) * idleWobble);
        }

        if (weaponTransform != null)
        {
            if (currentAnim != WeaponAnim.NONE)
            {
                weaponAnimTime += Time.deltaTime;

                if (weaponAnimTime >= weaponAnimLength)
                {
                    currentAnim = WeaponAnim.NONE;
                }
            }


            switch (currentAnim)
            {
            case WeaponAnim.NONE:
            {
                weaponTransform.localPosition    = aimDirection * 0.5f + new Vector3(0f, 0.2f, 0f);
                weaponTransform.localEulerAngles = new Vector3(0f, 0f, -aimDirection.x * 45f);
                break;
            }

            case WeaponAnim.STAB:
            {
                float t = weaponAnimTime / weaponAnimLength;

                weaponTransform.localPosition    = directionOfAnim * (0.5f + Mathf.Clamp01(Mathf.Sin(t * Mathf.PI) * 1.1f) * 0.75f) + new Vector3(0f, 0.2f, 0f);
                weaponTransform.localEulerAngles = new Vector3(0f, 0f, -Mathf.Sign(directionOfAnim.x) * 90f);

                break;
            }

            case WeaponAnim.SWING:
            {
                float t = weaponAnimTime / weaponAnimLength;

                weaponTransform.localPosition    = Quaternion.Euler(new Vector3(0f, t * 360f, 0f)) * (directionOfAnim * 0.75f);
                weaponTransform.localEulerAngles = new Vector3(0f, 0f, -(weaponTransform.localPosition.x) * 90f);

                break;
            }
            }
        }
    }
    private static WeaponAnim GetWeaponAnimFallback(WeaponAnim weaponAnim)
    {
        switch (weaponAnim)
        {
        case WeaponAnim.RightAttack2:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.RightAttack3:
            return(WeaponAnim.RightAttack2);

        case WeaponAnim.LeftAttack2:
            return(WeaponAnim.LeftAttack);

        case WeaponAnim.LeftAttack3:
            return(WeaponAnim.LeftAttack2);

        case WeaponAnim.Run:
            return(WeaponAnim.Walk);

        case WeaponAnim.FrontHit:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.FrontHit2:
            return(WeaponAnim.FrontHit);

        case WeaponAnim.FrontHit3:
            return(WeaponAnim.FrontHit2);

        case WeaponAnim.LeftHit:
            return(WeaponAnim.FrontHit);

        case WeaponAnim.LeftHit2:
            return(WeaponAnim.LeftHit);

        case WeaponAnim.LeftHit3:
            return(WeaponAnim.LeftHit2);

        case WeaponAnim.RightHit:
            return(WeaponAnim.FrontHit);

        case WeaponAnim.RightHit2:
            return(WeaponAnim.RightHit);

        case WeaponAnim.RightHit3:
            return(WeaponAnim.RightHit2);

        case WeaponAnim.BackHit:
            return(WeaponAnim.FrontHit);

        case WeaponAnim.BackHit2:
            return(WeaponAnim.BackHit);

        case WeaponAnim.BackHit3:
            return(WeaponAnim.BackHit2);

        case WeaponAnim.RightCriticalSwing:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.LeftCriticalSwing:
            return(WeaponAnim.LeftAttack);

        case WeaponAnim.Fidget2:
            return(WeaponAnim.Fidget);

        case WeaponAnim.Fidget3:
            return(WeaponAnim.Fidget2);

        case WeaponAnim.Sneak:
            return(WeaponAnim.Walk);

        case WeaponAnim.Panic:
            return(WeaponAnim.Fidget);

        case WeaponAnim.RightCombatStart:
        case WeaponAnim.LeftCombatStart:
            return(WeaponAnim.CombatFidget);

        case WeaponAnim.CombatIdle:
            return(WeaponAnim.Idle);

        case WeaponAnim.CombatFidget:
            return(WeaponAnim.Fidget);

        case WeaponAnim.Special1:
        case WeaponAnim.Special2:
        case WeaponAnim.Special3:
        case WeaponAnim.FrontDodge:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.RightDodge:
        case WeaponAnim.LeftDodge:
        case WeaponAnim.BackDodge:
            return(WeaponAnim.FrontDodge);

        case WeaponAnim.RightThrow:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.LeftThrow:
            return(WeaponAnim.LeftAttack);

        case WeaponAnim.LeftSnatch:
            return(WeaponAnim.RightAttack);

        case WeaponAnim.RightSnatch:
            return(WeaponAnim.LeftAttack);

        default:
            return(WeaponAnim.None);
        }
    }
 private static string GetWeaponAnimName(WeaponAnim weaponAnim)
 {
     return(sWeaponAnimNames[(int)weaponAnim]);
 }
Esempio n. 6
0
    public void SetWeaponEquip(S_Weapon weapon)
    {
        weaponEquipped = weapon;

        //set other weapons inactive
        if (otherWeapons != null)
        {
            foreach (object obj in otherWeapons.transform)
            {
                Transform child = (Transform)obj;
                child.gameObject.SetActive(false);
            }
        }
        //set selected weapons active
        switch (weaponEquipped)
        {
        case S_Weapon.DAGGER:
            Weapon            = transform.Find("Weapon/Dagger").gameObject;
            attackStyle       = AttackStyle.Slash;
            attackPlaceHolder = Slash;
            break;

        case S_Weapon.RAPIER:
            Weapon            = transform.Find("Weapon/Rapier").gameObject;
            attackStyle       = AttackStyle.Slash;
            attackPlaceHolder = Slash;
            break;

        case S_Weapon.SPEAR:
            Weapon            = transform.Find("Weapon/Spear").gameObject;
            attackStyle       = AttackStyle.Thrust;
            attackPlaceHolder = Thrust;
            break;

        case S_Weapon.LONGSPEAR:
            Weapon            = transform.Find("Weapon/LongSpear").gameObject;
            attackStyle       = AttackStyle.Thrust;
            attackPlaceHolder = Thrust;
            break;

        case S_Weapon.LONGSWORD:
            Weapon            = transform.Find("Weapon/LongSword").gameObject;
            attackStyle       = AttackStyle.Slash;
            attackPlaceHolder = Slash;
            break;

        case S_Weapon.ARROW:
            Weapon            = transform.Find("Weapon/Arrow").gameObject;
            attackStyle       = AttackStyle.Bow;
            attackPlaceHolder = Slash;
            break;

        case S_Weapon.BOW:
            Weapon            = transform.Find("Weapon/Bow").gameObject;
            attackStyle       = AttackStyle.Bow;
            attackPlaceHolder = Slash;
            break;
        }

        Weapon.SetActive(true);
        WeaponAnim = Weapon.GetComponent <Animator>();
        WeaponAnim.SetBool(attackStyle.ToString(), attackPlaceHolder);
    }