unity学习(69)——多人位置同步

news2024/11/17 23:54:35

简单的很,每个客户端向服务器发送位置信息,服务器再把这些位置信息发送给其他客户端

1.客户端发送。

1.1在SocketModel脚本中添加一个新的类MoveDTO

public class MoveDTO
{
	public string Id{get; set;}
	public int Dir{get;set;}
	public Assets.Model.Vector4 Rotation{get;set;}
	public Assets.Model.Vector3 Point{get;set;}
}

 一个新的PlayerStateConstans类

public class PlayerStateConstans
{
	public const int FORWARD=0;
	public const int BACK=1;
	public const int LEFT=2;
	public const int RIGHT=3;
	public const int IDLE=4;
	public const int ATTACK=5;
	public const int SKILL=6;
	public const int DIE=7;
}

1.2在JoystickPlayerExample脚本中的FixedUpdate()中添加如下代码,不停的向服务器发包。

MoveDTO dto = new MoveDTO();
dto.Id = SelectMenu.nowPlayer.id;
dto.Dir = PlayerStateConstans.IDLE;//玩家的状态,这个到时候去服务器翻一下--playerState结构体
dto.Rotation = new Assets.Model.Vector4( model.transform.rotation);//转码啥的都只是时间问题
dto.Point = new Assets.Model.Vector3( model.transform.position);//系统自带的
string message = LitJson.JsonMapper.ToJson(dto);
NetWorkScript.getInstance().sendMessage(Protocol.MAP,SelectMenu.nowPlayer.map,MapProtocol.MOVE_CREQ,message);

1.3从双端的执行结果,服务器此时应该是成功解析了数据包并发回了其他玩家的信息,这个里编译测试应该是不远了。 

2.通过上图可见,返回的结果数据包的三个参数是 1 2 4,在mapHandler增加对于command=4的处理代码,处理返回所有角色的移动信息,包括我自己

2.1在MessageManager脚本的MapHandlerFk中增加代码

2.2给预制体模型挂在一个脚本EachStateScript,用来存放每个实例化模型包含的状态变量,内容如下:这个变量可不能用static,静态变量连赋值都做不到。

2.3MapHandler.cs中增加move函数,解析数据包 同时操作对应模型移动,当然不移动自己

百度AI现在真的是强无敌啊!

 代码如下:

public void move(string message)
{
    MoveDTO dto = Coding<MoveDTO>.decode(message);//感觉马上就要能编译了
    if (dto.Id == SelectMenu.nowPlayer.id)//自己的位置不修改
    {
        return;
    }
    //下面修改实例
    GameObject go = playergoList[dto.Id];
    go.transform.rotation = new Quaternion((float)dto.Rotation.X, (float)dto.Rotation.Y, (float)dto.Rotation.Z, (float)dto.Rotation.W);
    go.transform.position = new Vector3((float)dto.Point.X, (float)dto.Point.Y, (float)dto.Point.Z);
    //go.BroadcastMessage("PlayerState", dto.Dir);//这里必须学会给每个实例带上这个状态位
    //go.GetComponent<>
    EachStateScript e = GetComponent<EachStateScript>();
    e.playerState = (int)dto.Dir;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1541780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析和机器学习库Pandas的使用

Pandas 库是一个免费、开源的第三方 Python 库&#xff0c;是 Python 数据分析和机器学习的工具之一。Pandas 提供了两种数据结构&#xff0c;分别是 Series&#xff08;一维数组结构&#xff09;与 DataFrame&#xff08;二维数组结构&#xff09;&#xff0c;极大地增强的了 …

2024-Spring IOC 和 AOP源码分析(上篇)

前言&#xff1a;笔者最近面了几次大厂。。。开局Spring源码暴击 之前看过忘了写篇总结。。。 1、介绍一下Spring 核心组件&#xff1a; 常用模块&#xff1a; 常用注解&#xff1a; 2、说一下SpringIOC原理 概念&#xff1a;Spring 通过一个配置文件描述 Bean 及 Bean …

登录校验:JWT令牌、Filter、Interceptor

JWT&#xff1a; 全称&#xff1a;JSON Web Token 定义了一种简洁的、自包含的格式&#xff0c;用于在通信双方以json数据格式安全的传输信息&#xff0c;由于数字签名的存在&#xff0c;这些信息是可靠的。 组成&#xff1a; Header(头部)&#xff1a;&#xff08;“alg&q…

基于物理的实时渲染 -- PBR

简介 PBR&#xff0c;或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering)&#xff0c;它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。正因为基于物理的渲染目的便是为了使用一种更符合物理学规律的方式来模…

如何申请代码签名证书

代码签名证书也是数字证书的一种&#xff0c;其主要作用是对可执行脚本、软件代码和内容进行数字签名的数字证书。代码签名证书用于验证开发者身份真实性、保护代码的完整性。用户下载软件时&#xff0c;能通过数字签名验证软件来源&#xff0c;确认软件、代码没有被非法篡改或…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 1 套

#需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要资源或有问题的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企业根据自身业务需求&#…

数据结构和算法:树

二叉树 与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含值、左子节点引用和右子节点引用。 /* 二叉树节点结构体 */ struct TreeNode {int val; // 节点值TreeNode *left; // 左子节点指针TreeNode *right; // 右子节点指针TreeNode(int x) : val(x),…

项目管理证书有何用?这些PMP考试机会一定要抓住

项目管理证书有何用&#xff1f;这些PMP考试机会一定要抓住&#xff01; PMP认证的中文全称是“项目管理专业人士资格认证”&#xff0c;是目前国际上声誉较高并且含金量比较高的项目管理证书之一&#xff0c;本人有幸考过&#xff0c;也通过PMP认证成功转岗&#xff0c;应该也…

每日一题 --- 反转链表[力扣][Go]

反转链表 题目&#xff1a;206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&a…

mybatis实践篇(二)

自定义类型处理器&#xff08;TypeHandler&#xff09; 实体 package com.wyl.mybatis.entity;import java.util.Date;/*** Description 省市区-字典* Author wuyilong* Date 2024-02-26*/public class FullCity {private static final long serialVersionUID 1L;/*** 主键I…

python之(19)CPU性能分析常见工具

Python之(19)CPU性能分析常见工具 Author: Once Day Date: 2024年3月24日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏:Python开发_Once-Day的博客…

车载测试 UDS诊断 CANoe使用(线下实操项目)

本周末2天的时间&#xff0c;可以线下带大家对车载项目&#xff1a; uds诊断进行实操训练和CANoe工具的灵活使用 本博主从事新能源汽车的研发部&#xff0c;主要是嵌入式方面的&#xff0c;对车载测试的底层逻辑非常熟悉。 需要项目或者CANoe工具实操的可以关注并私信我

【数据结构和算法初阶(C语言)】二叉树的链式结构--前、中、后序遍历实现详解,节点数目计算及oj题目详解---二叉树学习日记③

1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑关系。 通常的方法是 链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别用来给出该结点左孩子和右孩子所 在的链结点的存…

[自研开源] MyData v0.7.5 更新日志

开源地址&#xff1a;gitee | github 详细介绍&#xff1a;MyData 基于 Web API 的数据集成平台 部署文档&#xff1a;用 Docker 部署 MyData 使用手册&#xff1a;MyData 使用手册 试用体验&#xff1a;https://demo.mydata.work 交流Q群&#xff1a;430089673 介绍 MyData …

(ES6)前端八股文修炼Day2

1. let const var 的区别 var&#xff1a; var 是在 ES5 中引入的声明变量的关键字。 具有函数作用域&#xff0c;而不是块作用域&#xff0c;这意味着使用 var 声明的变量在函数内部是可见的。 变量可以被重复声明&#xff0c;而且变量的值可以在声明前使用&#xff0c;这可能…

一文带你看懂甘特图,项目进度、资源分配清清楚楚

带大家看懂一个甘特图&#xff0c;我们打开一个zz-plan 的甘特图&#xff0c;左边是任务栏&#xff0c;右边是进度条&#xff0c;上面这个是时间&#xff0c;下面是一个整个项目的一个状态&#xff0c;任务、工时、周期和进度。 这一列颜色灰色的表示是当天&#xff0c;我们从…

Linux常用命令和基础命令合集---非常推荐

非常好用的Linux通用基础常用命令和高级命令。 下载链接&#xff1a;https://download.csdn.net/download/lishihuijava/89026399

2024腾讯云服务器2核4G、4核8G、8核16G配置最新收费标准

腾讯云服务器多少钱一年&#xff1f;61元一年起。2024年最新腾讯云服务器优惠价格表&#xff0c;腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

城市内涝水文水动力模型软件

原文链接&#xff1a;城市内涝水文水动力模型软件https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598401&idx3&sn0c4c86b3a5d09a75b8f07e6fad81aa9c&chksmfa8200a6cdf589b0970a6854869e8e3a9f132fe40a19977863c091cbcf6d9786f067e0c5651e&token1…

Autosar MCAL配置——ADC

文章目录 前言一、创建Adc硬件单元二、创建、配置Adc通道1.根据电路原理图,有多少ADC采样引脚,就创建多少ADC采样通道。2.配置Adc通道3.配置ADC组4.配置ADC扫描组三、配置ADC通用设置前言 ADC,即Analogue Digital Converter缩写。简单来说,它是将输入的模拟信号转换为数字…