NewN_UAVPlane/Assets/Zion/Scripts/Sync1/PlayerMove.cs

116 lines
3.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text;
using System;
public class PlayerMove : MonoBehaviour
{
public float speed = 3f;
Animator anim;
[HideInInspector]
public Vector3 move;
MyPlayer myPlayer;
/// <summary>
/// 跟随模式
/// </summary>
public bool FollowMode;
public bool Freeze;
void Start()
{
anim = GetComponent<Animator>();
// myPlayer = GameManage.Instance.me.GetComponent<MyPlayer>();
if (!GameManage.Instance.is单机模式)
{
stdong.area = LoadManage.Instance.currentRoomArea;
stBudong.area = LoadManage.Instance.currentRoomArea;
byte[] idbyte = Encoding.UTF8.GetBytes(LoadManage.Instance.MyId);
//动
byte[] data1 = new byte[4 + idbyte.Length + 1];
Array.Copy(BitConverter.GetBytes(idbyte.Length), 0, data1, 0, 4);
Array.Copy(idbyte, 0, data1, 4, idbyte.Length);
data1[4 + idbyte.Length] = 1;
stdong.m_sOperaData = data1;
//停
byte[] data2 = new byte[4 + idbyte.Length + 1];
Array.Copy(BitConverter.GetBytes(idbyte.Length), 0, data2, 0, 4);
Array.Copy(idbyte, 0, data2, 4, idbyte.Length);
data2[4 + idbyte.Length] = 0;
stBudong.m_sOperaData = data2;
}
}
st_Motions stdong = new st_Motions { m_iOperaType = 8};
st_Motions stBudong = new st_Motions { m_iOperaType = 8 };
bool issend = false;
bool issendStop = false;
void Update()
{
if (!GameManage.Instance.is单机模式)
{
//if (Input.GetKeyDown(KeyCode.Y))
//{
// ChatPanel.instance.gameObject.SetActive(!ChatPanel.instance.gameObject.activeInHierarchy);
//}
//if (ChatPanel.instance.gameObject.activeInHierarchy)
//{
// return;
//}
}
if (Freeze) return;
if (FollowMode) return;
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
move = new Vector3(x, 0, z);
move = new Vector3(x, 0,z);
if (move != Vector3.zero)
{
issendStop = false;
//播放动画
if (!issend)
{
if (LoadManage.Instance != null && LoadManage.Instance.RSclient != null)
LoadManage.Instance.RSclient.Send(stdong);
issend = true;
}
// 转向
move = Quaternion.Euler(0, Camera.main.transform.eulerAngles.y, 0) * move;
transform.position += move * speed* Time.deltaTime;
RotatePlayer();
}
else
{
issend = false;
//停止动画
if (!issendStop)
{
if (LoadManage.Instance!=null && LoadManage.Instance.RSclient != null)
LoadManage.Instance.RSclient.Send(stBudong);
issendStop = true;
}
}
UpdateAnim();
}
void UpdateAnim()
{
anim.SetFloat("InputMagnitude", move.magnitude);
}
private void RotatePlayer()
{
//向量v围绕y轴旋转cameraAngle.y度
Vector3 vec = Quaternion.Euler(0, 0, 0) * move;
Quaternion qua = Quaternion.LookRotation(vec);
transform.rotation = Quaternion.Lerp(transform.rotation, qua, Time.deltaTime * 100);
}
}