예제 #1
0
    private void SetViceBoneMoveDataWhenFollow(MoveViceBone vicePtr)
    {
        MoveBone bonePtr = GetBaseBone(vicePtr.baseBoneId);

        vicePtr.pos = bonePtr.pos;
        vicePtr.dir = bonePtr.dir;
    }
예제 #2
0
    private void SetViceBoneMoveDataWhenFollow(MoveViceBone vicePtr)
    {
        Debug.Log("=2=update=======》前副骨骼追随的主骨骼是:" + vicePtr.baseBoneId);
        MoveBone bonePtr = GetBaseBone(vicePtr.baseBoneId);

        vicePtr.pos = bonePtr.pos;
        vicePtr.dir = bonePtr.dir;
    }
예제 #3
0
    /// <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;
        }
    }
예제 #4
0
    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;
        }
    }
예제 #5
0
    /// <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;
        }
    }
예제 #6
0
 public void SetBaseValue(int baseBoneId, MoveBone targetBaseBone)
 {
     this.baseBoneId = baseBoneId;
     this.pos        = targetBaseBone.pos;
     this.dir        = targetBaseBone.dir;
 }