Unity学习笔记(一):BallGame

本文介绍Unity中BallGame的实现细节,包括玩家控制、背景音乐管理、障碍物碰撞及游戏结束机制。通过代码片段解析,展示了如何利用Unity的特性进行游戏逻辑设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity学习笔记(一):BallGame

(一)Player:

    public float speed=10;
    public float turnSpeed = 4;

speed:延z轴移动(前进方向)的速度。
turnSpeed:延x轴移动的速度。

 public GameObject prefebMusic;
  void Start()
    {
        var music = GameObject.Find("Bgmusic");
        if (music == null)
        {
           var m=Instantiate(prefebMusic,null);
            DontDestroyOnLoad(m);
            m.name = "Bgmusic";
        }
    }

操作:1.把它设为预置体,即拖到这里Gk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODE1NTcz,size_16,color_FFFFFF,t_70)在这里删除
2.删除背景音乐组件并将其拖到Player下
在这里插入图片描述

  if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadScene(0);
            Time.timeScale = 1;
           // return;
        }

如果输入R键,回到初始场景,0即为初始场景。时间规模恢复为1(正常)。return加不加好像没有太大区别(?)

float x = Input.GetAxis("Horizontal");
transform.Translate(x * turnSpeed * Time.deltaTime, 0, speed * Time.deltaTime);

Input.GetAxis:获取x的水平输入。(Horizontal为键盘上的左右键,AD键,摇杆的左右键。)
transform.Translate:x延水平方向的位移乘以时间即为位移,y位移为0,延z方向的位移。

//屏幕动态旋转效果
        var c = Camera.main.transform;//取到主摄像机变换组件
        Quaternion cur = c.rotation;//获得摄像机当前旋转角度并用四元数表示
        Quaternion target = cur * Quaternion.Euler(0, 0, x * 1.5f);//将当前旋转角度加入与输入有关的旋转 
        Camera.main.transform.rotation = Quaternion.Slerp(cur, target, 0.5f);//在当前旋转角度加上和输入有关的旋转角度计算出一个平滑差值

        if (transform.position.x < -4 || transform.position.x > 4)
        {
            transform.Translate(0, -10 * Time.deltaTime, 0);
        }

如果x的坐标超过轨道两边界限,即视为出局。造成小球掉落的效果。

        if(transform.position.y<-20)
        {
            Time.timeScale = 0;
        }

如果小球掉落距离超过20个单位,时间静止。

(2)Barrier

 private void OnTriggerEnter(Collider other)
    {
        Debug.Log(other.name+"碰到了我");//为了检测是否碰到了
        if (other.name == "Player")
        {
            Time.timeScale = 0;
        }
    }

在碰到之前先将其设置为刚体。(触发器)
如果碰到了,游戏结束(时间规模变为0,时间静止)。

(3)Finish

   private void Start()
    {
        GameObject canvas = GameObject.Find("Canvas");
        canvas.transform.Find("Panel").gameObject.SetActive(false);
    }
    private void OnTriggerEnter(Collider other)
    {
        GameObject canvas=GameObject.Find("Canvas");
        canvas.transform.Find("Panel").gameObject.SetActive(true);
        //组件及相关查找问题
    }

设定一个Panel,一个text组件(显示恭喜通关)。在未碰到之前显示false,碰到之后显示True。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值