zoukankan      html  css  js  c++  java
  • 塔防游戏 Day3

    1. 添加按钮动画

      选择 Button->Transition 为 Animation ,然后自定义四种状态动画即可。

      

    2. 控制升级面板的显示和隐藏

     1 //  升级处理
     2 // 若点击同一炮塔,并且面板已显示
     3 if (mapCube.turretGo == selectedTurret && upgradeCanvas.activeInHierarchy)
     4 {
     5     HideUpgradeUI();                // 隐藏面板
     6 }
     7 else     // 否则显示面部
     8 {
     9     ShowUpgradeUI(mapCube.transform.position, mapCube.isUpgraded);
    10 }
    11 selectedTurret = mapCube.turretGo;
     1 // 显示升级面板
     2 void ShowUpgradeUI(Vector3 pos, bool isDisableUpgrade)
     3 {
     4     upgradeCanvas.SetActive(true);                      // 显示面板
     5     upgradeCanvas.transform.position = pos;             // 放在合适的位置
     6     upgradeButton.interactable = !isDisableUpgrade;     // 升级按钮是否可用
     7 }
     8 
     9 // 隐藏升级面板
    10 void HideUpgradeUI()
    11 {
    12     upgradeCanvas.SetActive(false);
    13 }

     3. 给升级面板添加动画

     1 // 显示升级面板
     2 void ShowUpgradeUI(Vector3 pos, bool isDisableUpgrade)
     3 {
     4     StopCoroutine("HideUpgradeUI()");                   // 开始协程
     5     upgradeCanvas.SetActive(false);
     6     upgradeCanvas.SetActive(true);                      // 显示面板
     7     upgradeCanvas.transform.position = pos;             // 放在合适的位置
     8     upgradeButton.interactable = !isDisableUpgrade;     // 升级按钮是否可用
     9 }
    10 
    11 // 隐藏升级面板
    12 IEnumerator HideUpgradeUI()
    13 {
    14     upgradeCanvasAnimator.SetTrigger("Hide");
    15     yield return new WaitForSeconds(0.5f);
    16     upgradeCanvas.SetActive(false);
    17 }

     4. 控制升级和拆毁炮台

     1 // 点击按钮触发函数
     2 public void onUpgradeButtonDown()
     3 {
     4     selectedMapCube.UpdateTurret();
     5     StartCoroutine(HideUpgradeUI());
     6 }
     7 
     8 public void onDestroyButtonDown()
     9 {
    10     selectedMapCube.DestroyTurret();
    11     StartCoroutine(HideUpgradeUI());
    12 }
     1 // 升级炮塔
     2 public void UpdateTurret()
     3 {
     4     if (isUpgraded) return;
     5     Destroy(turretGo);
     6     turretGo = GameObject.Instantiate(turretData.turretUpgradedPrefab, transform.position, Quaternion.identity);
     7     isUpgraded = true;
     8     // 产生特效
     9     GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);
    10     Destroy(effect, 1.5f);                     // 1.5秒后销毁特效
    11 }
    12 
    13 // 拆毁炮台
    14 public void DestroyTurret()
    15 {
    16     Destroy(turretGo);
    17     isUpgraded = false;             // 初始化
    18     turretGo = null;
    19     turretData = null;
    20     // 产生特效
    21     GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);
    22     Destroy(effect, 1.5f);                     // 1.5秒后销毁特效
    23 }

     5. 添加激光炮塔

       添加 LineRenderer 组件。

       

    if (enemys.Count > 0)
    {
        // 设置激光的开始位置和结尾位置
        laserRenderer.SetPositions(new Vector3[] { firePosition.position, enemys[0].transform.position });
    }

    4. 游戏失败情况处理

    1 // 游戏失败
    2 public void fail()
    3 {
    4     MessageText.text = "失 败";
    5     endUI.SetActive(true);
    6     enemySpawner.Stop();            // 停止生成敌人
    7 }
    1 public void Stop()
    2 {
    3     StopCoroutine(coroutine);                   // 停止协程
    4 }

    5. 菜单设计

     1 // 点击开始游戏按钮
     2 public void OnButtonStart()
     3 {
     4     SceneManager.LoadScene(1);
     5 }
     6 
     7 // 点击退出按钮
     8 public void OnButtonExit()
     9 {
    10 #if UNITY_EDITOR
    11     UnityEditor.EditorApplication.isPlaying = false;
    12 #else
    13     Application.Quit();      
    14 #endif
    15 }

    完!!!

  • 相关阅读:
    tee & vim
    xml ui
    Maven多模块项目打包前的一些注意事项(打包失败)
    jdk11+ spring5+ 报反射错误的屏蔽方法
    Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found 用IDEA创建springboot项目的时候遇到的一些坑
    如何在Zynq-7000上烧写PL Image
    python3 使用ssl安全连接发送邮件
    Centos7 启动指定docker容器报错
    Linux下多进程编程
    make的变量及赋值运算
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/unity3d03.html
Copyright © 2011-2022 走看看