Unity 3D 入门小游戏 小球酷跑(下)


一、障碍物自动生成

为了保证游戏结束之前有源源不断的障碍物生成,所以要实现随机生成位置不同大小不同的障碍物。设置barrier为预设体,新建一个名为BarrierControl的C#文件,将其挂在BarrierControl上。
在这里插入图片描述

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

public class BarrierControl : MonoBehaviour {
    public GameObject player;
    public GameObject CurrentBarrier;
    public GameObject BarrierPre;
    public int barrierInterval = 5;
	// Use this for initialization
		
	// Update is called once per frame
	void Update () {
        AutoCreatBarrier();

    }
    public void AutoCreatBarrier()
    {
        if(player.transform.position.x>CurrentBarrier.transform.position.x)
        {
			//分数增加
			UICntrol._instance.AddScore(5);
			//坐标的设置
            float targetX = CurrentBarrier.transform.position.x + barrierInterval;
            float targetY = RandomBarrrierPositionY();
            Vector3 targetPos = new Vector3(targetX,targetY,0);
            //生成
            GameObject g = Instantiate(BarrierPre,targetPos,Quaternion.identity);
            //随机生成高度
            g.transform.localScale = new Vector3(g.transform.localScale.x, RandomBarrierSize((int)g.transform.position.y), g.transform.localScale.z);
            CurrentBarrier = g;
        }
    }
    public float RandomBarrrierPositionY()
    {
        int r = Random.Range(-3,3);
        return r;
    }
    public float RandomBarrierSize(int r)
    {
        int rAbs = Mathf.Abs(r);
        if(rAbs==0)
        {
            return 6;
        }
        else
        {
            return (3 - rAbs) * 2 - 1;
        }

    }
}

二、障碍物自动销毁

为了防止障碍物生成后过多占用空间,故要设置小球经过后障碍物自动销毁。新建一个Cube 改名为Trigger并添加刚体属性。新建一个名为AutoDestoryBarrier的C#文件,将其挂在这个Trigger上。
在这里插入图片描述

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

public class AutoDestoryBarriers : MonoBehaviour {

  private void OnTriggerEnter(Collider other)
    {
        Destroy(other.gameObject);
    }
    
}

三、障碍物颜色随机组

障碍物颜色随机生成,新建一个名为BarrierColor的C#文件,将其挂在Barrier上,将五个材质球放在Barriermaterials中。
在这里插入图片描述

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

public class BarrierColor : MonoBehaviour {

	public Material[] barriermaterials;
	void Start()
	{
		int i = Random.Range (0, barriermaterials.Length);
		gameObject.GetComponent<Renderer> ().material = barriermaterials [i];
	}

}

四、碰到障碍物颜色提示

新建一个名为PlayerColorCollision的C#文件将其挂在player上。
在这里插入图片描述

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

public class PlayerColorCollision : MonoBehaviour {

	private void OnCollisionEnter(Collision collision)
	{
		UICntrol._instance.AddScore (-4);
		gameObject.GetComponent<Renderer> ().material.color = Color.red;
	}
	private void OnCollisionExit(Collision collision)
	{
		gameObject.GetComponent<Renderer> ().material.color = Color.white;
	}
}

五、分数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

public class UICntrol : MonoBehaviour {

	public Text scoreText;
	public int score=0;
	//游戏开发的设计模式--单例模式
	public static UICntrol _instance;
	private void Awake()
	{
		_instance = this;
	}
	//得分的情况
	public void AddScore(int x)
	{
		score += x;
		scoreText.text = "得分" + score;
	}
}

在这里插入图片描述


总结

小球酷跑小游戏,就在这里完结啦!撒花!!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作 1. 首先创建一个新的Unity3D项目,并命名为“小球”。 2. 在场景中创建一个球形物体,并调整其大小和位置,使其看起来像一个小球。 3. 添加一个刚体组件,以便球可以受到物理引擎的影响。 4. 添加一个脚本组件,以便我们可以编写代码来控制小球的行为。 5. 在脚本中添加以下代码来控制小球的移动: ``` using UnityEngine; public class BallController : MonoBehaviour { public float speed = 10f; private Rigidbody rb; private void Start() { rb = GetComponent<Rigidbody>(); } private void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0f, moveVertical); rb.AddForce(movement * speed); } } ``` 6. 现在我们可以通过按下方向键来控制小球的移动了。 7. 添加一个地面,在场景中创建一个平面物体,并将其调整到适当的位置和大小。 8. 添加一个盒子碰撞器组件,并将其调整到与地面物体相匹配。 9. 在脚本中添加以下代码,以便小球在接触地面时可以停止移动: ``` private void OnCollisionEnter(Collision other) { if (other.gameObject.CompareTag("Ground")) { rb.velocity = Vector3.zero; rb.angularVelocity = Vector3.zero; } } ``` 10. 添加一些障碍物,使游戏更有挑战性。 11. 添加一些收集品,如硬币或宝石,并编写代码来使小球可以收集它们。 12. 最后,添加一些音效和动画效果,以使游戏更具吸引力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值