void FrameUpdate() { // 这种情况是飞行道具打不中人,飞出一段距离就消失 if (aimId == -1) { if (VInt3.Distance(initPosition, mover.position) >= distance) { mover.StopMove(); Destroy(gameObject); } } // 这种情况是可以打中人,会一直跟随目标对象,直到打中为止 else { if (aimPlayer == null) { aimPlayer = Global.entity [aimId].GetComponent <Player> (); } // 方向跟随目标 transform.LookAt((Vector3)aimPlayer.mover.position + new Vector3(0, (float)offsetY, 0)); // 判断是否打中目标 if (!isHit) { if (VInt3.Distance(mover.position, aimPlayer.mover.position) < (VInt)2.0f) { isHit = true; aimPlayer.Damage(aimId, 200); mover.StopMove(); Destroy(gameObject); } } } mover.StartMove((VInt3)transform.forward, speed); }
void FrameUpdate() { // 取当前帧的指令,并进行相应的计算 JsonObject frameOrder = LogicFrame.getFrameOrder(uid); if (frameOrder != null) { int type = Convert.ToInt32(frameOrder ["type"]); if (type == Global.Frame_Move) // 移动 { int vx = Convert.ToInt32(frameOrder ["vx"]); int vy = Convert.ToInt32(frameOrder ["vy"]); int vz = Convert.ToInt32(frameOrder ["vz"]); mover.StartMove(new VInt3(vx, vy, vz), speedReal); } else if (type == Global.Frame_StopMove) // 停止移动 { mover.StopMove(); } else if (type == Global.Frame_Attack) // 攻击 { OnAttack(); } else if (type == Global.Frame_Skill) // 技能 { int skillCode = Convert.ToInt32(frameOrder ["code"]); OnSkill(skillCode); } } foreach (int uid in Global.entity.Keys) { Player player = Global.entity [uid].GetComponent <Player> (); player.blood.textInfo.text = player.mover.position.ToStringF3(); } string text = ""; text += LogicFrame.frameOrderList.Count + ", " + LogicFrame.frame + ", " + LogicFrame.frameIntervalTimeReal; log.text = text; }