使用Multiplayer Networking做一个简单的多人游戏例子-1/2(换一种方法)

SynMove.cs

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class SynMove : NetworkBehaviour {
    //当 SyncVar 发生改变时,UNet 会从 Server 端向所有有效的 Client 端发送这些改变。注意这里的方向,是从 Server 到 Client ,而不是从 Client 到 Server 的方向。
    [SyncVar]
    private Vector3 synPos;
    [SerializeField]Transform myTransform;
    [SerializeField]float lerpRate = 15;

    // Update is called once per frame
    void FixedUpdate () {
        TransmitPosition ();
        LerpPosition ();

    }
    void LerpPosition(){
        //不是本地玩家
        if (!isLocalPlayer) {
            //非本地玩家的位置进行更新
            myTransform.position = Vector3.Lerp (myTransform.position,synPos,Time.deltaTime*lerpRate);
        }
    }
    [Command]
    //命令, 在客户端调用,但是在服务端运行,这是方法必须以 Cmd 开头
    void CmdProvidePositionToServer(Vector3 pos){
        //在服务器上为synPos 同步变量赋值
        synPos = pos;
    }
    [ClientCallback]
    //只在客户端调用
    void TransmitPosition(){
        //是本地玩家
        if (isLocalPlayer) {
            //就把本地玩家的位置传给服务器
            CmdProvidePositionToServer (myTransform.position);
        }
    }
}

PlayerController.cs

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class PlayerController : NetworkBehaviour {

    // Update is called once per frame
    void Update () {
        //判断是不是本地玩家(自己只能控制自己的玩家,不能控制别人的玩家)
        if (isLocalPlayer == false) {
            return;
        }
        //获取键盘横轴的值
        float h = Input.GetAxis ("Horizontal");
        //获取键盘纵轴的值
        float v = Input.GetAxis ("Vertical");
        //主角左右移动
        transform.Translate (Vector3.right*h*3*Time.deltaTime);
        //主角前后移动
        transform.Translate (Vector3.forward*v*3*Time.deltaTime);
    }
}
时间: 2024-10-20 03:56:54

使用Multiplayer Networking做一个简单的多人游戏例子-1/2(换一种方法)的相关文章

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 本文主要讲述了如何使用Multiplayer Networking开发多人游戏,文中实例.代码来源于Unity官方教程. 原文:INTRODUCTION TO A SIMPLE MULTIPLAYER EXAMPLE Networking Overview The High Level API N

使用Multiplayer Networking做一个简单的多人游戏例子-1/2

原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 本文主要讲述了如何使用Multiplayer Networking开发多人游戏,文中实例.代码来源于Unity官方教程. 原文:INTRODUCTION TO A SIMPLE MULTIPLAYER EXAMPLE Networking Overview The High Level API Network System Concepts OK,现在可以开始了! 1. 开

【 D3.js 入门系列 — 3 】 做一个简单的图表!

图1. 柱形图 1. 柱形图 前几章的例子,都是对文字进行处理.本章中将用 D3 做一个简单的柱形图.制作柱形图有很多种方法,比如用 HTML 的 <div> 标签,或在 SVG 上绘制 . SVG ,即可缩放矢量图形(Scalable Vector Graphics),使用 XML 格式定义图形,可在 W3School 学习 SVG 的相关语法,不需要记住所有标签,用的时候再查即可. 先看下面的代码: <script src="http://d3js.org/d3.v3.mi

[3] 用D3.js做一个简单的图表吧!

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为可缩放矢量图形(Scalable Vector Graphics),SVG 使用 XML 格式定义图像,不清楚什么是SVG的朋友请先在 w3cschools 学习下

用EF DataBase First做一个简单的MVC3报名页面

使用EF DataBase First做一个简单的MVC3报名网站 ORM(Object Relational Mapping)是面向对象语言中的一种数据访问技术,在ASP.NET中,可以通过ADO.NET Entity Framework技术来简化数据访问.在EF里,有Code First,Model First和DataBase First三种方法来实现. 百度百科关于ORM的介绍: http://baike.baidu.com/view/197951.htm?fr=aladdin 1.就像

【Python】 做一个简单的 http 服务器

# coding=utf-8 ''' Created on 2014年6月15日 @author: Yang ''' import socket import datetime # 初始化socket s = socket.socket() # 获取主机名, 也可以使用localhost # host = socket.gethostname() host = "localhost" # 默认的http协议端口号 port = 80 # 绑定服务器socket的ip和端口号 s.bin

Jmeter初步使用二--使用jmeter做一个简单的性能测试

经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍并使用. 首先,打开Jmeter工具,并建立一个测试计划(测试脚本).启动jmeter后,jmeter会自动生成一个空的测试计划,我们可以基于该测试计划建立自己的测试计划. 步骤: 步骤一:添加线程组 一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简

使用React并做一个简单的to-do-list

1. 前言 说到React,我从一年之前就开始试着了解并且看了相关的入门教程,而且还买过一本<React:引领未来的用户界面开发框架 >拜读.React的轻量组件化的思想及其visual-dom的这种技术创新,也算是早就有了初步了解.一来没有学的太深入,二来后来在工作中和业余项目中都没有用到,因此慢慢的就更加生疏了. 近期,因为我想把自己的开源项目wangEditor能放在React.angular和vuejs中使用.先从react开始,顺手自己也重试一下React的基础知识,顺便再做一个小d