private void SetViceBoneMoveDataWhenFollow(MoveViceBone vicePtr) { MoveBone bonePtr = GetBaseBone(vicePtr.baseBoneId); vicePtr.pos = bonePtr.pos; vicePtr.dir = bonePtr.dir; }
private void SetViceBoneMoveDataWhenFollow(MoveViceBone vicePtr) { Debug.Log("=2=update=======》前副骨骼追随的主骨骼是:" + vicePtr.baseBoneId); MoveBone bonePtr = GetBaseBone(vicePtr.baseBoneId); vicePtr.pos = bonePtr.pos; vicePtr.dir = bonePtr.dir; }
/// <summary> /// 更新主骨骼层数据 /// </summary> /// <param name="delta_s">时间,单位秒.</param> /// <param name="speed">速度.</param> /// <param name="dir">方向.</param> private void UpdateBone(float delta_s, float speed, Vector2 dir) { MoveBone bonePtr = GetBaseBone(firstBone); MoveBone beforeBonePtr = null; bonePtr.pos = bonePtr.pos + dir * (speed * delta_s); bonePtr.dir = dir; for (int i = firstBone + 1, imax = firstBone + boneNum; i < imax; i++) { bonePtr = GetBaseBone(i); beforeBonePtr = GetBaseBone(i - 1); Vector2 fNDir = (beforeBonePtr.pos - bonePtr.pos).normalized; bonePtr.pos = beforeBonePtr.pos - fNDir * bonePtr.lengthWithBefore; bonePtr.dir = fNDir; } }
private void UpdateMuscle() { MoveViceBone viceBonePtr = null; MoveMuscle musclePtr = null; for (int i = 0; i < muscleNum; i++) { musclePtr = GetMuscle(i); viceBonePtr = GetViceBone(musclePtr.viceBoneId); MoveBone baseBone = GetBaseBone(viceBonePtr.baseBoneId); musclePtr.dir = baseBone.dir; Vector2 offsetDir = LogicMath.GetRotateNewPos(baseBone.dir, musclePtr.sinWithBoneDir, musclePtr.cosWithBoneDir); musclePtr.pos = baseBone.pos + offsetDir * musclePtr.deltaLength; } }
/// <summary> /// 更新主骨骼层数据 /// </summary> /// <param name="delta_s">时间,单位秒.</param> /// <param name="speed">速度.</param> /// <param name="dir">方向.</param> private void UpdateBone(float delta_s, float speed, Vector2 dir) { MoveBone bonePtr = GetBaseBone(firstBone); MoveBone beforeBonePtr = null; //主骨骼的位置 bonePtr.pos = bonePtr.pos + dir * (speed * delta_s); //主骨骼的方向 bonePtr.dir = dir; for (int i = firstBone + 1, imax = firstBone + boneNum; i < imax; i++) { //获取当前主骨骼 bonePtr = GetBaseBone(i); //获取上一个主骨骼 beforeBonePtr = GetBaseBone(i - 1); //求取上一个骨骼和当前骨骼的方向 Vector2 fNDir = (beforeBonePtr.pos - bonePtr.pos).normalized; //根据和上一个主骨骼的间距,求得现在位置 Debug.Log("=1=update=======》当前主骨骼是:" + i + ";上一个主骨骼是:" + (i - 1) + ";bonePtr.lengthWithBefore:" + bonePtr.lengthWithBefore); bonePtr.pos = beforeBonePtr.pos - fNDir * bonePtr.lengthWithBefore; bonePtr.dir = fNDir; } }
public void SetBaseValue(int baseBoneId, MoveBone targetBaseBone) { this.baseBoneId = baseBoneId; this.pos = targetBaseBone.pos; this.dir = targetBaseBone.dir; }