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); }
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); }
// 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]); }
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); }