• Unity 跑酷游戏全部脚本(完结)


    脚本1 触发器脚本 

    这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为 
     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class ColliidisonTrigger : MonoBehaviour
    {
        //触发检测  1.碰到金币克隆区,克隆金币 2.恐克隆怪物  3.碰撞金币 吃掉它 加分 4.碰到怪物,掉血 5碰到加速带加速、减速
        //该触发检测脚本挂到 主角身上
        //PlayerCont onePlayer = new PlayerCont();
      
        GameObject BeiPengObj;
        public GameObject MosterMuban;
        public GameObject CloneStruFather;

        public GameObject JInbiMUban;
        public GameObject JinbiFather;
        
        private void OnTriggerEnter(Collider other)
        {
              
               BeiPengObj = other.transform.gameObject;
            //如果碰到触发器,执行一次 
            Debug.Log("碰到了别人");
            if (BeiPengObj.tag == "MonsterTrigger")//碰到了怪物克隆区触发器
            {
                CloneMonster();

            }
            if (BeiPengObj.tag == "rCoinTrigger")//碰到了金币克隆区触发器
            {
                Debug.Log("kelongjinbi");
                CloneCoin();
            }


            if (BeiPengObj.tag == "TriggerSpeedUp")//碰到了加速区触发器
            {
                Debug.Log("开始加速");
                Speedup();
            }

            if (BeiPengObj.tag == "Coin")//碰到了金币触发器
            {
                Debug.Log("吃掉,消失金币,加分");
                Destroy(BeiPengObj);
                addScore();
            }

            if (BeiPengObj.tag == "Monster")//碰到了怪物障碍物
            {
                Debug.Log("掉血");
                ScoreManager.SubBlood(); //跨类访问并执行分数类里面的掉血函数    
            }
        }

        void CloneMonster()
        {
            for (int i = 0; i < 10; i++)
            {
                Vector3 ONETEMPPOS = new Vector3(156, 0, BeiPengObj.transform.position.z + 50f+i*3);
                Debug.Log("克隆怪物去");
                GameObject.Instantiate(MosterMuban, ONETEMPPOS, Quaternion.Euler(0, 0, 0), CloneStruFather.transform);
            }
        }
        void CloneCoin()
        {
            for (int i = 0; i < 10; i++)
            {
                Vector3 ONETEMPPOS = new Vector3(156, 0, BeiPengObj.transform.position.z + 50f + i * 3);
                Debug.Log("克隆怪物去");
                GameObject.Instantiate(JInbiMUban, ONETEMPPOS, Quaternion.Euler(0, 0, 0), JinbiFather.transform);
            }
        }
        void Speedup()
        {
            PlayerCont.RunSpeed = 20f;
        }

        void addScore()
        {
            ScoreManager.ScoreAdd();//跨类访问并执行分数类里面的加分函数
        }

       
    }//end class

     

    脚本2 分数管理脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class ScoreManager : MonoBehaviour
    {
        //分数管理 血量管理
        // 如果撞击到金币就加分,如果撞击到障碍物就掉血

        public static  int CurrentScore=0;
        public static int CurrentBlood = 10000;


        public static void ScoreAdd()
        {
            Debug.Log("加分函数开始执行");
            CurrentScore += 10;
            Debug.Log("分:"+CurrentScore);
        }


        public static void SubBlood()
        {
            Debug.Log("掉血函数开始执行");
            CurrentBlood -= 100;
            Debug.Log("血:" + CurrentBlood);
        }
        private void OnGUI()
        {
            Rect oneLableRec = new Rect(100, 100, 50, 50);
            GUILayout.Box(CurrentBlood.ToString(), GUILayout.Width(200), GUILayout.Height(50), GUILayout.ExpandWidth(false)); 
            // 创建另一个矩形框,背景色为红色,边框宽度为3像素
            GUILayout.Box(CurrentScore.ToString(), GUILayout.Width(200), GUILayout.Height(70), GUILayout.ExpandWidth(false));
            GUILayout.TextField("", GUILayout.Width(200), GUILayout.Height(50), GUILayout.ExpandWidth(false));
        }

    }
     

    脚本3 空物体移动的脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class PlayerCont : MonoBehaviour
    {
        //Horizontal
        //1.控制玩家移动,input.getaix
        //2.A、D控制向左、右移动
        //3.W控制跳跃
        public GameObject Player;
        public float LRSPEED = 10F;
        public float JUMPSPEED = 5;
       
        public static float RunSpeed;

        private void Start()
        {
            RunSpeed = 10f;
        }
        private void Update()
        {
            UserInput();
     
        }
        //*=========================
      public  void UserInput()
        {
            //Debug.Log("检测用户按下的键盘A D W");
            float MoveZuoY = Input.GetAxis("Horizontal");
            ControlMove(MoveZuoY);
            
            if (Input.GetKey(KeyCode.W))
            {
                Jump();
            }
        }
        void ControlMove(float ZuoyouMove)
        {
            Player.transform.Translate(new Vector3(ZuoyouMove * LRSPEED * Time.deltaTime, 0, 0));

        }
       
        void Jump()
        {
            Player.transform.Translate(new Vector3(0, JUMPSPEED * Time.deltaTime, 0));
            //Debug.Log("角色开始移动了");
        }
        private void FixedUpdate()
        {
            AwalysRun();
        }
     void AwalysRun()
        {
            Player.transform.Translate(new Vector3(0, 0, 1 * RunSpeed * Time.deltaTime));
        }
    }
     

     

  • 相关阅读:
    【Swift 60秒】40 - Parameter labels
    Redis数据类型之Sorted Set的使用
    从第三方数据集成工具迁移到Apache SeaTunnel的实操经验分享
    webpack打包之sourceMap
    什么是js的闭包,它是如何产生的
    标定板生成网址,可以直接打印,matlab标定工具箱
    爬虫爬取百度图片、搜狗图片
    计算机系统(18)----- 进程互斥的软件实现方法
    爬虫学习(15):selenium自动化测试(四):截屏、弹出框和下拉框
    史上最全的web前端面试题汇总及答案1
  • 原文地址:https://blog.csdn.net/leoysq/article/details/134329200