//计算两次鼠标与坦克的相对方向的偏移量 private void CalDeri(ZF.TankInfo _tankInfo) { // 复制类 deltaAngles.move = _tankInfo.tankOrder.move; deltaAngles.steer = _tankInfo.tankOrder.steer; deltaAngles.shoot = _tankInfo.tankOrder.shoot; //计算与上一次的偏差 deltaAngles.direction.x = _tankInfo.tankOrder.direction.x - lastMove.x; deltaAngles.direction.y = _tankInfo.tankOrder.direction.y - lastMove.y; deltaAngles.direction.z = _tankInfo.tankOrder.direction.z - lastMove.z; //更新上一次相对坦克方向 lastMove.x = _tankInfo.tankOrder.direction.x; lastMove.y = _tankInfo.tankOrder.direction.y; lastMove.z = _tankInfo.tankOrder.direction.z; }
private void WriteData(ZF.IFetchTankInfo tank) { ZF.TankInfo tankInfo = tank.FetchTankInfo(); // 记录鼠标指向的方向是否有位移 // 计算鼠标偏移量 CalDeri(tankInfo); // 间隔时间大于0.1s可以记录一次状态 if (Time.time - statusTime > 0.06) { manager.StoreStatus(tankInfo); statusTime = Time.time; } // 间隔时间大于0.02s且存在有效操作时记录操作 if (Time.time - operationTime > 0.02 && CanRecOpera(deltaAngles)) { manager.StoreOperation(deltaAngles); operationTime = Time.time; } }