【UNET自学日志】Part2 旋转同步

在正式开始设置旋转的同步之前,先进行Network场景的设置,使得在Menu这一场景下连接服务器,然后在Main场景中开始游戏,断开连接后再次回到Menu场景。

我们需要的时候将Main中的NetworkManager复制到Menu场景中,并且删除Main中的NetworkManager,然后在Build Setting中添加两个场景,Menu在Main之前。

接着需要在NetworkManager物体的Network Manager组件中,将Menu设为Offine Scene,Main设为Online Scene。


接下来我们进入正题——旋转的同步

新建脚本Player_SyncRotation

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Player_SyncRotation : NetworkBehaviour {

    [SyncVar]private Quaternion syncPlayerRotation;
    [SyncVar]private Quaternion syncCamRotation;

    [SerializeField]private Transform playerTransform;
    [SerializeField]private Transform camTransform;
    [SerializeField]private float lerpRate=15;

	
    void FixedUpdate ()
    {
        TransmitRotations();
        LerpRotations();
    }

    void LerpRotations()
    {
        if (!isLocalPlayer)
        {
            playerTransform.rotation = Quaternion.Lerp(playerTransform.rotation, syncPlayerRotation, Time.deltaTime * lerpRate);
            camTransform.rotation = Quaternion.Lerp(camTransform.rotation, syncCamRotation, Time.deltaTime * lerpRate);
        }
    }

    [Command]
    void CmdProvideRotationToServer(Quaternion playerRot, Quaternion camRot)
    {
        syncPlayerRotation = playerRot;
        syncCamRotation = camRot;
    }

    [Client]
    void TransmitRotations()
    {
        if (isLocalPlayer)
        {
            CmdProvideRotationToServer(playerTransform.rotation, camTransform.rotation);
        }
    }
}
将脚本添加到Player上,将Player物体拖到playerTransform上,将Player的子物体FirstPersonCharacter拖到camTransform上。旋转同步设置完成。


额外再补充:Player的生成点问题

Player的生成点一直是固定的一个位置,现在我们要将Player的生成点设置为固定的几个位置,随机选择一个位置生成。

首先我们需要新建一个空物体,称其为Spawn,再新建一个空物体命名为SpawnPoints,将Spawn成为其子物体。

在Spawn中添加组件NetworkStartPosition,并复制Spawn物体,随意的放置到其他的位置。至此,生成点的设置完成。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值