コード例 #1
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 public override void SyncJump(int dir, int step, float vertSpeed, float horizSpeed, float horizAccSpeed, float horizEndSpeed, float curX, float curY, float curZ, float curTimer)
 {
     if (this._self.entityType == RoleManager.EntityType.EntityType_Self)
     {
         return;
     }
     if (step == 4 && base.jumpMode == 3 && curTimer - this.lastSyncTime < 0.5f)
     {
         return;
     }
     if (base.jumpMode == 0 && step == 2 && this.inProcess)
     {
         this.jumpQueue.Clear();
         this.inProcess = false;
         Debug.LogWarning("清空跳跃队列");
     }
     JumpSync.jumpItem item = default(JumpSync.jumpItem);
     item.dir           = dir;
     item.step          = step;
     item.vertSpeed     = vertSpeed;
     item.horizSpeed    = horizSpeed;
     item.horizAccSpeed = horizAccSpeed;
     item.endHorizSpeed = horizEndSpeed;
     item.curPos        = new Vector3(curX, curY, curZ);
     this.jumpQueue.Enqueue(item);
     this.lastSyncTime      = curTimer;
     this.timeSinceLastSync = 0f;
 }
コード例 #2
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 private void StartJump(JumpSync.jumpItem item)
 {
     if (Convert.ToInt32(this._self.transform.rotation.eulerAngles.y) != item.dir)
     {
         this._self.transform.rotation = Quaternion.Euler(this._self.transform.rotation.eulerAngles.x, (float)item.dir, this._self.transform.rotation.eulerAngles.z);
     }
     if (item.step == 2)
     {
         this.JumpClear();
         base.jumpMode          = 1;
         base.curVertSpeed      = item.vertSpeed;
         base.startVertSpeed    = item.vertSpeed;
         base.startHorizSpeed   = item.horizSpeed;
         base.horizAcceleration = item.horizAccSpeed;
         base.startPos          = item.curPos;
         this.curJumpAction     = this._self.roleAction.SetRoleJump(0);
         this.jumpStartTime     = Time.realtimeSinceStartup;
         this.inProcess         = false;
     }
     else if (item.step == 3)
     {
         if (item.curPos.y > this._self.transform.position.y && base.jumpMode == 1)
         {
             float num = item.curPos.y - this._self.transform.position.y;
             base.curVertSpeed = Mathf.Sqrt(item.vertSpeed * item.vertSpeed + 2f * this.gravity * num);
             base.StartCoroutine(this.WaitForJumpDashPosition(item));
         }
         else
         {
             base.jumpMode          = 2;
             base.startHorizSpeed   = item.horizSpeed;
             base.curHorizSpeed     = item.horizSpeed;
             base.endHorizSpeed     = item.endHorizSpeed;
             base.horizAcceleration = item.horizAccSpeed;
             this._self.roleAction.SetActionStatus(29);
             this.inProcess = false;
         }
     }
     else
     {
         if (base.jumpMode == 2)
         {
             base.startHorizSpeed = item.endHorizSpeed;
         }
         else
         {
             base.startHorizSpeed = item.horizSpeed;
         }
         if (base.jumpMode != 3)
         {
             base.jumpMode = 3;
         }
         base.curVertSpeed      = item.vertSpeed;
         base.horizAcceleration = 0f;
         this._self.roleAction.SetRoleFall(this.curJumpAction);
         this.inProcess = false;
     }
 }
コード例 #3
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 private void CheckReset(JumpSync.jumpItem item)
 {
     if (item.step == 2)
     {
         if (this._self.transform.position.y > item.curPos.y)
         {
             base.curVertSpeed -= 0.5f;
         }
         else if (this._self.transform.position.y < item.curPos.y)
         {
             base.curVertSpeed += 0.5f;
         }
     }
     else if (item.step == 3)
     {
         this._self.transform.position.y = 0f;
         Vector3 curPos = item.curPos;
         curPos.y = 0f;
         if (!(this._self.transform.position - curPos).normalized.Equals(this._self.transform.forward.normalized))
         {
             base.curHorizSpeed -= 0.5f;
         }
     }
     else if (item.step == 4)
     {
         if (this._self.transform.position.y < item.curPos.y)
         {
             base.curVertSpeed += 0.5f;
         }
         else if (this._self.transform.position.y > item.curPos.y)
         {
             base.curVertSpeed -= 0.5f;
         }
     }
     this.inProcess = false;
 }
コード例 #4
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 private IEnumerator WaitForJumpDashPosition(JumpSync.jumpItem item)
 {
     JumpSync.< WaitForJumpDashPosition > c__Iterator3E <WaitForJumpDashPosition> c__Iterator3E = new JumpSync.< WaitForJumpDashPosition > c__Iterator3E();
コード例 #5
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 private void DealJump(JumpSync.jumpItem item)
 {
     this.StartJump(item);
 }
コード例 #6
0
ファイル: JumpSync.cs プロジェクト: moto2002/jiandangjianghu
 private void LateUpdate()
 {
     if (this.jumpQueue.Count > 0 && !this.inProcess)
     {
         this.inProcess = true;
         JumpSync.jumpItem item = this.jumpQueue.Dequeue();
         if (base.jumpMode == 0)
         {
             Vector3 vector  = (Vector3)AstarPath.active.GetNearest(this._self.transform.position).node.position;
             Vector3 vector2 = (Vector3)AstarPath.active.GetNearest(item.curPos).node.position;
             if (item.step == 2)
             {
                 if (!vector.Equals(vector2))
                 {
                     this._self.transform.position = item.curPos;
                     this.DealJump(item);
                 }
                 else
                 {
                     this.DealJump(item);
                 }
             }
             else
             {
                 if (!vector.Equals(vector2))
                 {
                     this._self.move.SetServerPos(item.curPos, 5f, 0, 0, 0.1f, false, null);
                 }
                 this.inProcess = false;
             }
         }
         else if (base.jumpMode == 1)
         {
             if (item.step == 2)
             {
                 this.CheckReset(item);
             }
             else
             {
                 this.DealJump(item);
             }
         }
         else if (base.jumpMode == 2)
         {
             if (item.step == 3)
             {
                 this.CheckReset(item);
             }
             else if (item.step == 4)
             {
                 this.DealJump(item);
             }
             else
             {
                 this.inProcess = false;
                 Debug.LogError("错误!冲刺后收到起跳消息!");
             }
         }
         else if (item.step == 4)
         {
             this.CheckReset(item);
         }
         else if (item.step == 3)
         {
             this.DealJump(item);
         }
         else
         {
             this.inProcess = false;
             Debug.LogError("错误!下落时收到起跳消息!");
         }
     }
 }