Skip to content

Commit

Permalink
添加道具的UI部分
Browse files Browse the repository at this point in the history
  • Loading branch information
moshuying committed Jul 6, 2024
1 parent 1de4802 commit 4d556aa
Show file tree
Hide file tree
Showing 15 changed files with 1,215 additions and 112 deletions.
704 changes: 616 additions & 88 deletions Assets/Prefabs/UI.prefab

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions Assets/Scripts/GameMode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ public void StartGame()

// 控制 UI Panel
uiController.EnterGamePanel();
uiController.UpdateGrabPanel(player);
uiController.UpdateGrabPanel(player2);
}

public void StopGame()
Expand Down
8 changes: 4 additions & 4 deletions Assets/Scripts/GrabSpawner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,17 +118,17 @@ public void useGrab(PlayerController from, PlayerController to, string grab)
// 让对手远离自己
private void scare(PlayerController from, PlayerController to)
{
var dir = from.transform.position - to.transform.position;
var dir = to.transform.position - from.transform.position;
dir = dir.normalized;
to.rigidBody.AddForce(dir * to.horizontalSpeed * 20, ForceMode.Force);
to.rigidBody.AddForce(dir * to.horizontalSpeed * 200, ForceMode.Force);
Debug.Log("玩家"+from.name+"让"+to.name+"远离自己");
}
// 让对手靠近自己
private void attract(PlayerController from, PlayerController to)
{
var dir = to.transform.position - from.transform.position;
var dir = from.transform.position - to.transform.position;
dir = dir.normalized;
to.rigidBody.AddForce(dir * to.horizontalSpeed * 20, ForceMode.Force);
to.rigidBody.AddForce(dir * to.horizontalSpeed * 200, ForceMode.Force);
Debug.Log("玩家" + from.name + "让" + to.name + "靠近自己");
}
// 给自己回一滴血
Expand Down
2 changes: 1 addition & 1 deletion Assets/Scripts/MovingRoadController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using AmazingAssets.CurvedWorld.Example;
using AmazingAssets.CurvedWorld.Example;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
Expand Down
38 changes: 19 additions & 19 deletions Assets/Scripts/PlayerController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void Update()

if (anotherPlayer !=null)
{
string grab = shiftGrab();
string grab = popGrab();
if(grab != null)
{
GameObject.Find("Grab Spawner").GetComponent<GrabSpawner>().useGrab(
Expand All @@ -105,6 +105,11 @@ public void RemoveCrate()
allCarriedCrates.Remove(crate);
GameObject.Destroy(crate);
rigidBody.mass -= crate.GetComponent<CarriedCrateController>().mass;
// 如果没有箱子了,游戏结束
if (allCarriedCrates.Count == 0)
{
GameObject.Find("UI").GetComponent<UIController>().EnterGamePanel();
}
}

public void AddCrate()
Expand Down Expand Up @@ -144,35 +149,30 @@ private void OnTriggerEnter(Collider other)
}

// 持有道具
private string[] grablist = new string[3];
private int grabNum = 3;
public List<string> grablist = new List<string>();
private int grabNum = 1;
private void pushGrab(GameObject grab)
{
string[] res = new string[grabNum];
res[0] = grab.name;
// push 压入一个道具,最先进入的道具在最后,超出长度的道具被丢弃
for (int i = 1; i < grabNum; i++)
// 目前只持有一个道具
if(grablist.Count >= grabNum)
{
res[i] = grablist[i - 1];
grablist.RemoveAt(0);
}
grablist = res;
grablist.Add(grab.name);
GameObject.Find("UI").GetComponent<UIController>().UpdateGrabPanel(this);
}

// 获取最后一个道具
public string shiftGrab()
public string popGrab()
{
string[] res = new string[grabNum];
if (grablist[0] == null)
if(grablist.Count == 0)
{
return null;
}
string first = grablist[0];
for (int i = 0; i < grabNum-1 ; i++)
{
res[i] = grablist[i+1];
}
grablist = res;
return first;
var last = grablist.Last();
grablist.RemoveAt(grablist.Count - 1);
GameObject.Find("UI").GetComponent<UIController>().UpdateGrabPanel(this);
return last;
}

private PlayerController getAnotherPlayer()
Expand Down
57 changes: 57 additions & 0 deletions Assets/Scripts/UIController.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class UIController : MonoBehaviour
Expand All @@ -10,6 +11,8 @@ public class UIController : MonoBehaviour
GameObject startPanel;
GameObject gamePanel;
GameObject endPanel;
GameObject playerAGarbsPanel;
GameObject playerBGarbsPanel;

// Start is called before the first frame update
void Start()
Expand All @@ -20,6 +23,9 @@ void Start()
gamePanel = GameObject.Find("GamePanel");
endPanel = GameObject.Find("EndPanel");

playerAGarbsPanel = GameObject.Find("playerAGrabs");
playerBGarbsPanel = GameObject.Find("playerBGrabs");

this.EnterStartPanel();
}

Expand Down Expand Up @@ -69,4 +75,55 @@ public void EnterGamePanel()
gamePanel.SetActive(true);
endPanel.SetActive(false);
}

public void UpdateGrabPanel(PlayerController player)
{
var playerGarbsPanel = player.name.Contains("Player1") ? playerAGarbsPanel : playerBGarbsPanel;


// 没有道具时
if (player.grablist.Count == 0)
{
// 隐藏grab1
playerGarbsPanel.gameObject.SetActive(false);
return;
}
//在该panel下查找Grab1节点

playerGarbsPanel.gameObject.SetActive(true);

var banana = playerGarbsPanel.transform.Find("banana");
var box = playerGarbsPanel.transform.Find("box");
var collision = playerGarbsPanel.transform.Find("collision");
var boom = playerGarbsPanel.transform.Find("boom");

banana.gameObject.SetActive(false);
box.gameObject.SetActive(false);
collision.gameObject.SetActive(false);
boom.gameObject.SetActive(false);

var grab = player.grablist.ElementAt(0);
grab = grab.Contains("(Clone)") ? grab.Replace("(Clone)", "") : grab;

switch (grab)
{
case "banana1":
case "banana2":
banana.gameObject.SetActive(true);
break;
case "box1":
case "box2":
case "box3":
box.gameObject.SetActive(true);
break;
case "collision":
case "collision2":
collision.gameObject.SetActive(true);
break;
case "boom":
boom.gameObject.SetActive(true);
break;
}

}
}
8 changes: 8 additions & 0 deletions Assets/icon.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added Assets/icon/banana.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
127 changes: 127 additions & 0 deletions Assets/icon/banana.jpg.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added Assets/icon/boom.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 4d556aa

Please sign in to comment.