关于unity mirror的基本代码

编程入门 行业动态 更新时间:2024-10-11 07:33:35

关于unity mirror的基本<a href=https://www.elefans.com/category/jswz/34/1771412.html style=代码"/>

关于unity mirror的基本代码

今天我又又又来发Mirror啦,有需要更多代码的可以找我,文章如果有错,欢迎大佬改正。

常用代码

1.第一人称角色移动代码:

这个其实很简单,在原来移动的基础上加上if (!isLocalPlayer) return;就行了,然后再绑定一下摄像机

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
public class Playercode : NetworkBehaviour {public float speed = 5f;//campublic Camera cam;// Use this for initializationpublic override void OnStartLocalPlayer(){base.OnStartLocalPlayer();;//Cursor.visible = false;//Cursor.lockState = CursorLockMode.Locked;cam.gameObject.SetActive(true);}private void FixedUpdate(){if (!isLocalPlayer) return;Move();MouseLook();}// Update is called once per framevoid Update () {if (!isLocalPlayer) return;if (Input.GetKeyDown(KeyCode.Space))//跳跃{Ray ray = new Ray(transform.position, Vector3.down);if (Physics.Raycast(ray,1.5f)){GetComponent<Rigidbody>().velocity = Vector3.up * 8;}}}void Move(){//移动float x = Input.GetAxis ("Horizontal");float z = Input.GetAxis ("Vertical");Vector3 fwd = transform.forward;Vector3 f = new Vector3 (fwd.x, 0, fwd.z).normalized;Vector3 r = transform.right;Vector3 move = f * z + r * x;transform.position += move * speed * Time.deltaTime;}void MouseLook(){//鼠标控制视角float mx = Input.GetAxis ("Mouse X");float my = Input.GetAxis ("Mouse Y");Quaternion qx = Quaternion.Euler (0, mx*2, 0);Quaternion qy = Quaternion.Euler (-my*2, 0, 0);transform.rotation = qx * transform.rotation;cam.transform.rotation = cam.transform.rotation * qy;float angle = transform.eulerAngles.x;if (angle > 180) {angle -= 360;}if (angle < -180) {angle += 360;}if (angle > 80) {transform.eulerAngles = new Vector3 (80, transform.eulerAngles.y, 0);}if (angle < -80) {transform.eulerAngles = new Vector3 (-80, transform.eulerAngles.y, 0);}}

 2.连接后随机设置玩家颜色并同步

这个也很容易实现,只要使用syncVar同步一下颜色就好。

[SyncVar(hook = "SetColor")]Color PlayerColor;
public SkinnedMeshRenderer playermesh;public override void OnStartServer(){base.OnStartServer();float r = Random.Range(0f, 1f);float g = Random.Range(0f, 1f);float b = Random.Range(0f, 1f);PlayerColor = new Color(r,g,b);}
void SetColor(Color _,Color newColor){playermesh.material.color = newColor;//或者this.GetComponent<Renderer>().material.color = PlayerColor;}

3.第三、第一人称视角切换: 

这个我们只需要定义一个主摄像机cam,第一人称摄像机cam2,第三人称摄像机cam3,然后来回切换就行了。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
public class Playercode : NetworkBehaviour {public float speed = 5f;private bool change = true;//campublic Camera cam;public Camera cam2;public Camera cam3;// Use this for initializationpublic override void OnStartLocalPlayer(){base.OnStartLocalPlayer();;//Cursor.visible = false;//Cursor.lockState = CursorLockMode.Locked;隐藏鼠标cam2.gameObject.SetActive(false);cam3.gameObject.SetActive(false);cam = cam2;cam.gameObject.SetActive(true);}// Update is called once per framevoid Update () {if (!isLocalPlayer) return;if(Input.GetKeyDown(KeyCode.V))//切换摄像机{if (change){cam = cam3;change = false;cam.gameObject.SetActive(true);cam2.gameObject.SetActive(false);}else if(!change){cam = cam2;change = true;cam.gameObject.SetActive(true);cam3.gameObject.SetActive(false);}}}

等等,不对,我听到上楼的声音了,我爸来了!!

 好吧这只是一个网图。

今天就写到这里吧。

最后给大家一个投票,大家是更喜欢unity呢还是c++呢?

更多推荐

关于unity mirror的基本代码

本文发布于:2024-02-26 03:27:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701211.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码   unity   mirror

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!