代码"/>
关于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的基本代码
发布评论