This commit is contained in:
kridoo
2025-09-26 09:36:52 +08:00
parent 6e91a0c7f0
commit a9c7992a7a
37 changed files with 12827 additions and 469 deletions

View File

@@ -8,20 +8,20 @@ public class Player : MonoBehaviour
{
float times;
public bool isOtherPlayer; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public string sn; //<EFBFBD>SN
public TextMeshProUGUI user; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD>
public uint human; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʾ<EFBFBD><CABE>animator<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵڼ<C4B5><DABC><EFBFBD>ģģ<C4A3><C4A3> ע<><D7A2>:<3A><><EFBFBD><EFBFBD>ʾ<EFBFBD>˾<EFBFBD><CBBE>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>2<EFBFBD><32><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ͣ<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫע<D2AA><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public uint group; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public int x, y, z, q, w, e, r; //λ<EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>ת
public bool isOtherPlayer; //其他玩家
public string sn; //设备SN
public TextMeshProUGUI user; //体验者昵称
public uint human; //人类 表示用animator数组里面的第几个模模型 注意:不显示人就是查这个参数本地只有2种人的类型扫码那里要注意这个参数
public uint group; //分组名
public int x, y, z, q, w, e, r; //位置和旋转
public float LastTime ;
public GameObject[] meshRendererObj;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>ɫ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>
public GameObject[] manModelList; //<EFBFBD><EFBFBD>ģ<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public Animator[] animator; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>ɫ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>
int indexPlay = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
float manFirstHight = -1; //<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>ʼ<EFBFBD>ĸ߶<EFBFBD>
float state = 1; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD>
float height = 0f; //<EFBFBD><EFBFBD><EFBFBD>ָ߶<EFBFBD>
public GameObject[] meshRendererObj;//人物形态(大人,大人黄色,小孩,小孩黄色)
public GameObject[] manModelList; //人模型(大小,小孩)
public Animator[] animator; //人物动画(大人,大人黄色,小孩,小孩黄色)
int indexPlay = 0; //具体是哪个人物形态和动画
float manFirstHight = -1; //玩家初始的高度
float state = 1; //玩家状态(走,站,蹲)
float height = 0f; //文字高度
float distanceToTarget;
void Start()
@@ -30,7 +30,7 @@ public class Player : MonoBehaviour
//collider = this.GetComponent<CapsuleCollider>();
}
private uint lastHuman = 100; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private uint lastHuman = 100; // 缓存上一次的索引
private void Update()
{
if (Time.time - LastTime > 5)
@@ -40,7 +40,7 @@ public class Player : MonoBehaviour
gameObject.SetActive(false);
}
}
if (human != lastHuman)
{
for (int i = 0; i < manModelList.Length; i++)
@@ -52,20 +52,20 @@ public class Player : MonoBehaviour
{
height = 0f;
}
else
else
{
height = -0.3f;
}
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ߶<EFBFBD>
//设置文字高度
//user.gameObject.transform.localPosition = new Vector3(user.gameObject.transform.localPosition.x, user.gameObject.transform.localPosition.y + height, user.gameObject.transform.localPosition.z);
lastHuman = human; // <EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><EFBFBD><EFBFBD>
lastHuman = human; // 更新缓存
}
if (isOtherPlayer)
{
if(manFirstHight == -1)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>ʼ<EFBFBD>߶<EFBFBD>
if(manFirstHight == -1)//设置玩家初始高度
manFirstHight = y / times;
Vector3 tarpos = new Vector3(x / times, 0, z / times);
@@ -78,9 +78,9 @@ public class Player : MonoBehaviour
Quaternion targetq = Quaternion.Euler(targetv);
//Debug.Log(sn+"<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" + tarpos+"||<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>:"+ targetq);
//Debug.Log(sn+"收到的位置是:" + tarpos+"||收到的旋转是:"+ targetq);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>С<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>Ƕȸ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>Ƕȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ĽǶ<EFBFBD>
//当初始值跟目标角度小于2就将目标角度赋值给初始角度让旋转角度是需要的角度
if (Quaternion.Angle(currq, targetq) < 2)
{
transform.rotation = targetq;
@@ -93,7 +93,7 @@ public class Player : MonoBehaviour
distanceToTarget = Vector3.Distance(transform.position, tarpos);
if (distanceToTarget > 0.1f)
{
// λ<EFBFBD>ñ仯<EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><EFBFBD><EFBFBD> 10cm <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>߼<EFBFBD>
// 位置变化幅度超过 10cm 的处理逻辑
//animator[human].SetBool("iswalk", true);
if (transform.position == Vector3.zero)
{
@@ -106,58 +106,65 @@ public class Player : MonoBehaviour
}
else
{
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD> 10cm ʱֹͣ<CDA3>ƶ<EFBFBD>
// 距离小于等于 10cm 时停止移动
transform.position = tarpos;
}
if (Config.Group == group) //ͬ<EFBFBD><EFBFBD>
if (Config.Group == group) //同组
{
if (human == 0)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (human == 0)//大人
{
indexPlay = 0;
meshRendererObj[human].gameObject.SetActive(true);
meshRendererObj[human + 1].gameObject.SetActive(false);
}
else //С<EFBFBD><EFBFBD>
else //小孩
{
indexPlay = 2;
meshRendererObj[2].gameObject.SetActive(true);
meshRendererObj[3].gameObject.SetActive(false);
}
}
else //<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>
else //不同组
{
if (human == 0)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (human == 0)//大人
{
indexPlay = 1;
meshRendererObj[human].gameObject.SetActive(false);
meshRendererObj[human + 1].gameObject.SetActive(true);
}
else //С<EFBFBD><EFBFBD>
else //小孩
{
indexPlay = 3;
// Debug.Log("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+ meshRendererObj.Length+"||"+ human);
// Debug.Log("数组长度:"+ meshRendererObj.Length+"||"+ human);
meshRendererObj[2].gameObject.SetActive(false);
meshRendererObj[3].gameObject.SetActive(true);
}
}
state = y / times; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>λ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
state = y / times; //玩家在传位置的时候就用这个作为状态传的
if (state % 1 != 0)
{
state = 2;
}
// Debug.Log("最终状态是:"+ state);
//Debug.Log("<22><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>:"+ state);
if (state == 1)//<2F><><EFBFBD><EFBFBD>վ
if (state == 1)//人物站
{
animator[indexPlay].Play("01_Man_Idle");
}
else if (state == 2) //<EFBFBD><EFBFBD>
else if (state == 2) //
{
animator[indexPlay].Play("01_Man_Walk");
}
else //<2F><>
else
{
animator[indexPlay].Play("01_Man_Down");
}
}
else
{