【UNET自学日志】Part11 玩家复活
2016-04-23 21:06
281 查看
上一部分玩家摧毁的方法是设置其enable为false,那么玩家的复活就是在玩家死后,显示复活的按钮,点击按钮后把相关的enable再次设置为true即可
新建脚本Player_Respawn
在Player_Health中添加几行代码
= =反正真的没什么人看。。我也就懒得注释了
新建脚本Player_Respawn
using UnityEngine; using System.Collections; using UnityEngine.Networking; using UnityEngine.UI; public class Player_Respawn : NetworkBehaviour { private Player_Health healthScript; private Image crossHairImage; private GameObject respawnButton; // Use this for initialization void Start () { healthScript = GetComponent<Player_Health>(); healthScript.EventRespawn += EnablePlayer; crossHairImage = GameObject.Find("crossHairImage").GetComponent<Image>(); SetRespawnButton(); } void SetRespawnButton() { if (isLocalPlayer) { respawnButton = GameObject.Find("GameManager").GetComponent<GameManager_References>().respawnButton; respawnButton.GetComponent<Button>().onClick.AddListener(CommenceRespawn); respawnButton.SetActive(false); } } void OnDisable() { healthScript.EventRespawn -= EnablePlayer; } void EnablePlayer() { GetComponent<CharacterController>().enabled = true; GetComponent<Player_Shoot>().enabled = true; GetComponent<BoxCollider>().enabled = true; Renderer[] renderers = GetComponentsInChildren<Renderer>(); foreach (Renderer ren in renderers) { ren.enabled = true; } if (isLocalPlayer) { GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true; crossHairImage.enabled = true; respawnButton.SetActive(false); } } void CommenceRespawn() { CmdRespawnOnServer(); } [Command] void CmdRespawnOnServer() { healthScript.ResetHealth(); } }
在Player_Health中添加几行代码
public delegate void RespawnDelegate(); public event RespawnDelegate EventRespawn; void CheckCondition() { if (health <= 0 && !shouldDie&&!isDead) { shouldDie = true; } if (health <= 0 && shouldDie) { if (EventDie != null) { EventDie(); } shouldDie = false; } if (health > 0 && isDead) { if (EventRespawn != null) { EventRespawn(); } isDead = false; } } public void ResetHealth() { health = 100; }在Player_Death中的预留位置添加设置按钮活动的一行代码
void DisablePlayer() { GetComponent<CharacterController>().enabled=false; GetComponent<Player_Shoot>().enabled = false; GetComponent<BoxCollider>().enabled = false; Renderer[] renderers = GetComponentsInChildren<Renderer>(); foreach (Renderer ren in renderers) { ren.enabled = false; } healthScript.isDead = true; if (isLocalPlayer) { GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = false; crossHairImage.enabled = false; GameObject.Find("GameManager").GetComponent<GameManager_References>().respawnButton.SetActive(true); } }
= =反正真的没什么人看。。我也就懒得注释了
相关文章推荐
- TCP/IP协议族中tcp与udp的区别
- 电脑常用快捷键
- 遍历 JavaScript 数组
- Probability And Statistics In Python:Distributions And Sampling
- Jenkins配置自动化构建
- QT网络编程笔记
- 【系统启动过程简介】
- 与人工智能相关的创业公司或团队
- gdb调试正在运行的进程
- 宽搜,noip2013华容道,醉了。。
- 浅谈 PreparedStatement 和 Statement区别!!!!!
- 剑指offer-替换空格
- 使用Intent传递数据
- Markdown编辑器使用方法
- Linux下安装php环境并且配置Nginx支持php-fpm模块
- View6.2中viewPM和微软用户配置漫游的应用 推荐
- queue队列容器
- 关注的机器视觉领域信息
- XmlSerializer的使用
- linux 帮助命令