首页 > 其他分享 >Unity (玩家通关胜利的障碍物效果)

Unity (玩家通关胜利的障碍物效果)

时间:2024-05-26 14:56:46浏览次数:16  
标签:障碍物 游戏 玩家 Unity ar bool public 通关

前沿

当玩家进过密室逃脱的时候 胜利的时候制作 通关 的物体

 

右键 3Dobject  -- cube 然后 改名为GameEnding

 然后取消材质的勾选

 

然后制作一个canvas 

右键Ui -image 

 

 选中右边的那个 按住 Alt 选中右下角那给个

然后平铺 在创建个图片一样的操作然后那图片地址替换下

 

 

然后吸写如脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
/// <summary>
/// 相当于GameManager的角色。控制游戏结束的进程。(包括游戏结束时图片、音频的播放)
/// </summary>
public class GameEnding : MonoBehaviour
{
    //游戏结束图片淡入的时间
    public float fadeDuration = 1f;
    //游戏结束图片显示的持续时间
    public float displayImageDuration = 1f;
    
    //触发器的目标对象-玩家
    public GameObject player;

    //UI组件--游戏通关的CanvasGroup
    public CanvasGroup exitBackgroundImageCanvasGroup;
    //音频组件--游戏通关
    public AudioSource ar_exit;
    
    //UI组件--碰到敌人导致游戏彻底结束的CanvasGroup
    public CanvasGroup RestartCanvasGroup;
    //音频组件--游戏结束
    public AudioSource ar_caught;

    //走到胜利位置---游戏通关的bool值
    bool m_IsPlayerExit=false;

    //碰到敌人---游戏失败的bool值
    bool m_IsCaught=false;

    //用于控制游戏结束与游戏通关的声音播放的bool值
    bool IsHasPlay =false;

    //计时器
    float m_Timer;
    
    //玩家走到胜利的位置
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject == player) 
        {
            m_IsPlayerExit = true;
        }
    }

    // Update is called once per frame
    void Update()
    {
        //游戏通关,退出游戏
        if (m_IsPlayerExit)
        {
            EndLevel(exitBackgroundImageCanvasGroup,false,ar_exit);
        }
        //游戏失败,重新开始
        else if (m_IsCaught) 
        {
            EndLevel(RestartCanvasGroup,true,ar_caught);
        }
    }

    /// <summary>
    /// 玩家被敌人抓住
    /// </summary>
    public void IsCaught() 
    {
        m_IsCaught = true;
    }

    /// <summary>
    /// 游戏结束的方法 
    /// </summary>
    /// <param name="ca"></param>
    /// <param name="ReStart"></param>
    /// <param name="ar"></param>
    void EndLevel(CanvasGroup ca,bool ReStart,AudioSource ar) 
    {
        //控制声音播放的bool值的更新
        if (!IsHasPlay) 
        {
            //首先将音乐播放器打开
            ar.Play();
            IsHasPlay = true;
        }

        //根据m_Timer来设置本关游戏结束时的淡入淡出特效
        m_Timer+=Time.deltaTime;
        ca.alpha = m_Timer / fadeDuration;
        
        //本关游戏结束
        if (m_Timer > fadeDuration + displayImageDuration)
        {
                //游戏失败,重新开始
            if (ReStart) 
            {
                SceneManager.LoadScene(0);
            }
            else if (!ReStart) 
            {
                //游戏通关,退出游戏
                Application.Quit();
            }

        }
    }


}

这样就OK了

 

   //玩家走到胜利的位置
   private void OnTriggerEnter(Collider other)
   {
       if (other.gameObject == player) 
       {
           m_IsPlayerExit = true;
       }
   }
other.gameObject  就是碰撞器这样然后可以写 是否是玩家触碰到了这个

 

标签:障碍物,游戏,玩家,Unity,ar,bool,public,通关
From: https://www.cnblogs.com/yf-html/p/18213220

相关文章

  • [Unity] 添加新建Lua脚本选项
    Unity添加新建Lua脚本选项最近学习Unity的XLua热更新框架的时候,会经常需要创建新的Lua脚本。然而,Unity本身不支持直接创建.lua后缀的文件,所以每次都必须手动在外部打开文件夹创建。为了提高效率,就需要在Unity新建文件的菜单中添加了一个“新建Lua脚本”的选项。并且,要达到和“......
  • 一款功能强大的Unity数据可视化图表库
    前言今天大姚分享一款免费(基于MITLicense协议)、开源、功能强大、简单易用、可配置的Unity数据可视化图表库:XCharts。XCharts特性持续维护和更新、稳定、可靠、开源免费、上手快、文档丰富。支持多种扩展组件和扩展图表。提供扩展定制服务,满足用户个性化需求。支持折......
  • IntelliJ IDEA Community Edition 下载安装
    文章目录下载安装包安装中文插件卸载下载安装包下载IntelliJIDEA–领先的Java和KotlinIDE根据你的电脑操作系统选择合适的版本:IntelliJIDEAUltimate为付费版本,我们需要往下滑找到IntelliJIDEACommunityEdition,点击Download(如果需要,可以点击展开选......
  • Unity2d横板移动有个极小的向下的加速度
    2d横板角色移动在碰撞体边缘刚体会有个向下的极小值-1.776357e-15,如果用加速度判断一些东西会出问题,找了好久发现碰撞盒的size的x轴所影响,修改碰撞盒size的x值可以让他不触发,但值不是固定的,不同的碰撞盒有不同的值,本人初学,原因未知,求大佬解答在大概这个边缘的时候地面碰撞盒......
  • Unity热更学习--Lua脚本使用C#中的事件、委托和协程
    [14]lua调用使用C#中的事件和委托C#脚本:继续在Student类中声明//声明委托和事件publicUnityActiondele;publiceventUnityActioneventAction;publicvoidDoDele(){if(dele!=null)dele();}publicvoidDoEvent(){if(eventAction!=null)......
  • Unity (动画效果 和操控人物移动)
    前沿可以在store上选中自己的模型喜欢然后倒入到你的库中 然后场景中需要设置路线什么的要用到导航 因为天花板是头顶,不是静态的,所以把statc给取消勾选然后windows->>>Ai------>Navigation 点击level模型 然后 点击Bake然后就是烘培了导航 人物移动跟......
  • 【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植
    最终效果系列导航文章目录最终效果系列导航前言素材简单搭建环境豌豆射手向日葵源码结束前言在游戏界,有些作品以其独特的创意和精彩的游戏体验,成为了经典中的经典。而《植物大战僵尸》就是其中的佼佼者,它以其独特的塔防玩法和富有趣味性的设计,吸引了全球无数玩家......
  • Unity (保姆入门)
    前沿周末啦开始新的一轮征途,我的目标就是星辰大海嘎嘎孟还好之前学过COCOS,这个编辑器差不多, 还是不学无术啊。哈哈哈开始新的项目吧, 骚年!!!创建项目 然后倒入你的文件资源:材质,预制体之类的我网上找的材料然后在你的场景里面右键鼠标创建一个3D的胶囊体 ......
  • 05_不同路径2(带障碍物版)
    63.不同路径II一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物......
  • Unity基础——Input
    Unity基础——Input1.鼠标输入//我们在这段代码最后实现一个基本用鼠标控制视角的功能usingUnityEngine;classScript1:MonoBehaviour{[SerializeField]privatefloatmouseSensitivity=30f;privatefloatxRotation=0f;//当前的旋转角度......