Unity实现我的世界摧毁方块功能

事情是这样的,今天我打算复原我的世界,做到摧毁方块的功能时,就想不到可以用什么办法来检测,一开始我想用射线检测,可射线检测我不会...于是我又想到了碰撞检测

Fire.cs,代码如下。

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


public class Fire : MonoBehaviour {
	GameObject obj;
	void Start() {
		//获取球类对象
		obj = GameObject.Find("FirePoint");
	}
	void Update() {
		if (Input.GetMouseButton(0)) {
			obj = GameObject.Find ("FirePoint(Clone)");
			if (obj) {
				obj = GameObject.Find ("FirePoint(Clone)");
				this.obj.transform.Translate(new Vector3(0, 0, 2 * Time.deltaTime));
				obj = GameObject.Find("FirePoint");
			} else {
				obj = GameObject.Find("FirePoint");
				GameObject clone = Instantiate(obj, obj.transform.position, obj.transform.rotation);
				obj = GameObject.Find ("FirePoint(Clone)");
				this.obj.transform.Translate(new Vector3(0, 0, 2 * Time.deltaTime));
				Destroy(clone, 1.25f);
				obj = GameObject.Find("FirePoint");
			}
			obj = GameObject.Find("FirePoint");
		}
		if (Input.GetMouseButton(1)) {
			obj = GameObject.Find ("FirePoint(Clone)");
			if (obj) {
				obj = GameObject.Find ("FirePoint(Clone)");
				this.obj.transform.Translate(new Vector3(0, 0, 2 * Time.deltaTime));
				obj = GameObject.Find("FirePoint");
			} else {
				obj = GameObject.Find("FirePoint");
				GameObject clone = Instantiate(obj, obj.transform.position, obj.transform.rotation);
				obj = GameObject.Find ("FirePoint(Clone)");
				this.obj.transform.Translate(new Vector3(0, 0, 2 * Time.deltaTime));
				Destroy(clone, 1.25f);
				obj = GameObject.Find("FirePoint");
			}
			obj = GameObject.Find("FirePoint");
		}
	}
}

把这个脚本附到摄像机身上。

下一个脚本是挂在要被挖掘的方块上的

Block.cs

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

public class Block : MonoBehaviour {
	int Health = 1;
	// Start is called before the first frame update
	void Start() {

	}

	// Update is called once per frame
	void Update() {
		if (Health <= 0) {
			Destroy(this.gameObject);
		}
	}
	private void OnTriggerEnter(Collider other) {
		if (other.tag == "Bullet") {
			Health--;
		}
	}
}

下面的设置:

        被挖掘方块的设置:

这里加两个碰撞体是因为角色也需要碰撞体,如果不打“Is Trigger”会检测不到,打上角色就会掉下去了,所以两个都得加。

 由于用的是碰撞检测,所以我们需要附加碰撞体,添加“FirePoint”检测器。

 子弹设置:

调试时一定要确保子弹轨迹要在游戏准心内。 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Unity实现俄罗斯方块的小游戏,您可以按照以下步骤进行: 步骤1:创建游戏场景 在Unity中创建一个新的场景,并设置适当的摄像机和灯光。您可以使用2D或3D的方式来实现俄罗斯方块,具体取决于您的需求和偏好。 步骤2:创建游戏对象和脚本 创建俄罗斯方块的各种游戏对象,如方块、游戏区域、下落点等。然后,为每个游戏对象创建相应的脚本来控制它们的行为。 步骤3:实现方块的下落和移动 在游戏脚本中,实现方块的下落和移动逻辑。您可以使用定时器或帧更新来控制方块的下落速度,以及使用输入控制方块的左右移动和旋转。 步骤4:检测碰撞和消除行 实现方块与游戏区域的碰撞检测,以及行的消除逻辑。当方块落到底部或与其他方块碰撞时,将其固定在游戏区域中,并检查是否有完整的行可以消除。 步骤5:游戏结束和重置 实现游戏结束和重置逻辑。当方块堆积到达游戏区域的顶部时,游戏结束。您可以显示分数或其他游戏结束的界面,并提供重新开始游戏的选项。 步骤6:美化和音效 添加适当的图形和音效来提升游戏的体验。您可以使用精灵或模型来渲染方块,添加背景音乐和音效来增强游戏的氛围。 以上是一个基本的实现俄罗斯方块小游戏的步骤。您可以根据自己的需求和创意来扩展和改进游戏。祝您实现一个有趣而成功的俄罗斯方块小游戏!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值