player的主要代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using TMPro;
using UnityEngine;
using Mirror;
public class Playercode : NetworkBehaviour {
public float speed = 5f;
//cam
public Camera cam;
public Camera cam2;
public Camera cam3;
//sync
[Header("sync")]
public int killsum;
[SyncVar(hook = "SetColor")]
Color PlayerColor = Color.black;
[SyncVar(hook = "showname")]
private string pname;
public string playername;
//[SyncVar(hook = "RpcsetImagecolor1")]
private Color image1;
//[SyncVar(hook = "RpcsetImagecolor2")]
private Color image2;
//
public GameObject anm;
public SkinnedMeshRenderer playermesh;
[Header("CD")]
private float FireCD;
private float moveCD;
//time
public int maxrealshijian = 10;
private int realshijian;
private 倒计时 djs;
//
Vector3 fuhuodian;
Vector3 guanzhandian;
//
public GameObject killplayer;
public GameObject bullutprefab;
//bool
public bool die = false;
private bool change = true;
[Header("UI")]
public TMP_Text realtime;
public TMP_Text myname;
public Text bishiCD;
public Text shunyiCD;
// Use this for initialization
public override void OnStartLocalPlayer()
{
base.OnStartLocalPlayer();
//kill = GameObject.Find("kill").GetComponent<Image>();
//beikill = GameObject.Find("beikill").GetComponent<Image>();
djs = GameObject.Find("jishi").gameObject.GetComponent<倒计时>();
if (djs == null) NetworkManager.singleton.StopClient();
killsum = 1;
killsum--;
Application.targetFrameRate = 30;
//Cursor.visible = false;
//Cursor.lockState = CursorLockMode.Locked;
guanzhandian = new Vector3(30, 10, -2.5f);
fuhuodian = transform.position;
cam2.gameObject.SetActive(false);
cam3.gameObject.SetActive(false);
cam = cam2;
cam.gameObject.SetActive(true);
realtime.gameObject.SetActive(false);
realshijian = maxrealshijian;
}
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);
pname = playername;
}
private void FixedUpdate()
{
if (!isLocalPlayer) return;
Move();
MouseLook();
if (2.0f - Time.time + FireCD >= 0)
{
string t;
t = "中指攻击冷却:" + (2.0f - Time.time + FireCD).ToString();
bishiCD.text = t;
}
else
bishiCD.text = "中指攻击冷却:0";
if (5.0f - Time.time + moveCD >= 0)
{
string t;
t = "瞬移冷却:" + (5.0f - Time.time + moveCD).ToString();
shunyiCD.text = t;
}
else
shunyiCD.text = "瞬移冷却:0";
}
// Update is called once per frame
void Update () {
if (!isLocalPlayer) return;
if (this.transform.position.y < -13.0f)
{
//transform.position = guanzhandian;
if (djs.daojishi > 0)
transform.position = fuhuodian;
else
{
transform.position = guanzhandian;
if (killplayer != null)
killplayer.GetComponent<Playercode>().killsum++;
die = true;
realshijian = maxrealshijian;
StopCoroutine("reallife");
StartCoroutine("reallife");
transform.Translate(0, 0, Random.Range(-2.0f, 2.0f));
}
}
if (Input.GetKeyDown(KeyCode.Space))
{
Ray ray = new Ray(transform.position, Vector3.down);
if (Physics.Raycast(ray,1.5f))
{
anm.GetComponent<Animator>().SetBool("jump?", true);
GetComponent<Rigidbody>().velocity = Vector3.up * 8;
}
}
else
{
Ray ray = new Ray(transform.position, Vector3.down);
if (Physics.Raycast(ray, 1.5f))
{
anm.GetComponent<Animator>().SetBool("jump?", false);
}
}
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);
}
}
if (die || djs.daojishi > 0) return;
if (Input.GetMouseButtonDown(0) && Time.time - FireCD >= 2.0f)
{
CmdFire();
FireCD = Time.time;
}
if (Input.GetKeyDown(KeyCode.E) && Time.time - moveCD >= 5.0f)
{
transform.Translate(0, 0, 2.5f);
moveCD = Time.time;
}
}
/*[Command]
void Cmdchangeimage()
{
image1 = killzhe.GetComponent<Player>().playermesh.material.color;
image2 = this.playermesh.material.color;
}*/
void Move(){
float x = Input.GetAxis ("Horizontal");
float z = Input.GetAxis ("Vertical");
if (z > 0)
anm.GetComponent<Animator>().SetInteger("run?", 1);
else if (z < 0)
anm.GetComponent<Animator>().SetInteger("run?", 2);
else
anm.GetComponent<Animator>().SetInteger("run?", 0);
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;
Debug.Log(x + " " + z);
}
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);
}
}
public void hidemouse()
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
[Command]
void CmdFire()
{
GameObject bullut = Instantiate(bullutprefab, transform.position, this.cam.transform.rotation);
bullut.GetComponent<peng>().fasheshe = this.gameObject;
bullut.transform.Rotate(0, -90, 0);
bullut.transform.Translate(1, 0, 0);
GameObject.Destroy(bullut, 2.0f);
bullut.GetComponent<Rigidbody>().velocity = this.cam.transform.forward * 40;
NetworkServer.Spawn(bullut);
}
//[ClientRpc]
void showname(string _,string changename)
{
myname.text = changename;
Debug.Log("change");
}
void SetColor(Color _,Color newColor)
{
playermesh.material.color = newColor;
Debug.Log("change");
}
public IEnumerator reallife()
{
realtime.gameObject.SetActive(true);
if (realshijian <= 0)
{
die = false;
realtime.gameObject.SetActive(false);
transform.position = fuhuodian;
}
else
{
string s = "距复活还有" + realshijian.ToString() + "秒";
realtime.text = s;
yield return new WaitForSeconds(1);
realshijian--;
StartCoroutine("reallife");
}
}
//[ClientRpc]
/*public void RpcsetImagecolor1(Color _1,Color _2)
{
kill.color = _2;
Debug.Log("kill");
}
public void RpcsetImagecolor2(Color _1, Color _2)
{
beikill.color = _2;
}
public IEnumerator clearkill()
{
yield return new WaitForSeconds(8);
killzhe = null;
}*/
}