1.创建文件夹:

2.创建一个空物体,添加如下组件:

  Network Manager(网络管理组件):

  Network Manager HUD(提供一个UI):

3.创建如下模型,并设置为预制体:

  给预制体添加组件:NetWork Identity

4.把预制体提供给网络组件:

  将预制体拖拽至:Network Manager - Spawn Info - Player Prefab

5.让玩家移动:

  以下脚本编辑好后拖拽至预制体上

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class PlayerController : MonoBehaviour
{
// 水平旋转
private float x;
// 垂直移动
private float z; void Start ()
{ } void Update ()
{
x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f;
z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f; // 旋转
transform.Rotate (, x, );
transform.Translate (, , z);
}
}

6.运行发现问题:客户端与服务器同时移动,移动不同步

7.修改脚本 PlayerController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking; public class PlayerController : NetworkBehaviour
{
// 水平旋转
private float x;
// 垂直移动
private float z; void Start ()
{ } void Update ()
{
// 如果不是本地玩家,就跳出该方法
// 加入游戏后 network manager 会标记本地玩家
if (!isLocalPlayer) {
return;
}
x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f;
z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f; // 旋转
transform.Rotate (, x, );
transform.Translate (, , z);
}
}

添加组件:

  Network Transform:

9.使本地角色看起来更特殊:

修改脚本 PlayerController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking; public class PlayerController : NetworkBehaviour
{
// 水平旋转
private float x;
// 垂直移动
private float z; void Start ()
{ } void Update ()
{
// 如果不是本地玩家,就跳出该方法
// 加入游戏后 network manager 会标记本地玩家
if (!isLocalPlayer) {
return;
}
x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f;
z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f; // 旋转
transform.Rotate (, x, );
transform.Translate (, , z);
} public override void OnStartLocalPlayer ()
{
// 调用父类中该虚方法
base.OnStartLocalPlayer ();
GetComponent<MeshRenderer> ().material.color = Color.blue;
}
}

10.制作子弹:

  制作子弹预制体

  修改Player预制体:添加 炮管、子弹发射位置、给脚本中的公共变量赋值。

  更新脚本 PlayerController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking; public class PlayerController : NetworkBehaviour
{
// 水平旋转
private float x;
// 垂直移动
private float z; // 子弹
public GameObject bulletPrefab;
// 子弹生成位置
public Transform bullerSpawn; void Start ()
{ } void Update ()
{
// 如果不是本地玩家,就跳出该方法
// 加入游戏后 network manager 会标记本地玩家
if (!isLocalPlayer) {
return;
}
x = Input.GetAxis ("Horizontal") * Time.deltaTime * 150.0f;
z = Input.GetAxis ("Vertical") * Time.deltaTime * 3.0f; // 旋转
transform.Rotate (, x, );
transform.Translate (, , z); // 发射子弹
if (Input.GetKeyDown (KeyCode.Space)) {
Fire ();
}
} public override void OnStartLocalPlayer ()
{
// 调用父类中该虚方法
base.OnStartLocalPlayer ();
GetComponent<MeshRenderer> ().material.color = Color.blue;
} private void Fire ()
{
print ("发射子弹");
// 生成子弹
GameObject bullet = Instantiate<GameObject> (bulletPrefab, bullerSpawn.position, bullerSpawn.rotation);
// 子弹飞行
bullet.gameObject.GetComponent<Rigidbody> ().velocity = bullet.transform.forward * 6.0f; Destroy (bullet, 5.0f);
}
}

11.给子弹 Bullet 预制体添加组件:Network Manager

让服务产生子弹的方法:

  ①.将子弹预制体拖拽到Network Manager - Registered Spawnable Prefabs

  ②.在脚本中生成子弹的方法前面加上 特性[Command]

12.制作血条

13.解决血条同步问题

14.玩家死亡后回到出生点

  此部分不用判断是否是本地玩家

15.创建敌人,产生敌人,

16.敌血量消失后敌人这个游戏物体消失

17.设置两个出生点,并在玩家死亡后随机选一个出生点复活。

请参考视频:

链接:https://pan.baidu.com/s/11fwz59saubkPdKpiUWUgew 密码:3pfc

UNet简单案例讲解的更多相关文章

  1. SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解

    SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...

  2. 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享   在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...

  3. php中foreach()函数与Array数组经典案例讲解

    //php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...

  4. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

    卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...

  5. 使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享 使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享    在开始讲解之前,我们先来看一下什 ...

  6. Shiro 核心功能案例讲解 基于SpringBoot 有源码

    Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...

  7. 自动化运维工具-pssh工具安装配置及简单使用讲解

    1.先决条件:安装pssh工具要求python版本大于2.4即可. 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remoteh ...

  8. 有关memcached企业面试案例讲解

    有关memcached企业面试案例讲解 1.Memcached是什么,有什么作用?    a. memcached是一个开源的.高性能的内存的缓存软件,从名称上看Mem就是内存的意思,而Cache就是 ...

  9. (转)使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    原文地址:http://www.cnblogs.com/huyong/archive/2013/09/24/3334848.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工 ...

随机推荐

  1. raspberrypi&linux

    Raspberrypi&linux 2018-01-23 19:54:01 Let's go!

  2. Problem J: 搜索基础之红与黑

    Problem J: 搜索基础之红与黑 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 170  Solved: 100[Submit][Status][ ...

  3. 2018.6.1 oracle数据库乱码问题

    执行select * from v$controlfile;为什么结果是未选定行? 显示连接了但是select * from dba_data_files; 显示中文乱码: shutdown star ...

  4. bazel安装

    https://blog.csdn.net/cxq234843654/article/details/70861155 sudo apt-get install openjdk-8-jdk echo ...

  5. object-detection-crowdai数据处理

    import os file=os.listdir('/home/xingyuzhou/object-detection-crowdai') file.sort(key= lambda x:int(x ...

  6. datetime 插件

    1  写一段文本 <div id="nomarl-wrap"> <div class="form-group"> <label c ...

  7. iOS 控制section不悬停 --- iOS开发系列 ---项目中成长的知识八

    一般情况下,tableview中的section是会默认不随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!) 有些时候 ...

  8. [JZOJ] 5935. 小凯学数学

    由Noip2018初赛的知识得,a|b + a&b = a+b 设计一个区间dp,设\(f[l][r][x]\)表示区间\([l,r]\)能否构成\(x\),数据不大,转移暴力枚举 复杂度\( ...

  9. arduino 语音音箱 :语音控制、MP3播放、报时、回复温湿度情况

    arduino 语音音箱 :语音控制.MP3播放.报时.回复温湿度情况 效果图 线路图 包装后的效果 功能 需要材料 arduino板 MP3播放模块及喇叭 时钟模块 温湿度模块 语音识别模块 面包板 ...

  10. php微信红包算法

    微信红包算法.php /**生成红包的函数*/ function getRandMoney($totalMoney, $totalPeople=2, $miniMoney=1){ $randRemai ...