06 - 坦克和子弹的制作以及炮台发射子弹

版权申明:

  • 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
  • 更多学习资源请加QQ:1517069595获取(企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)

目标:

在这里插入图片描述

  • 坦克和子弹预制体的制作
  • 脚本编写子弹的发射

坦克和子弹预制体的制作

  • 首先我们先新建一个空的GameObject重命名为Tank然后在其子节点创建一个Cube调整至合适的大小,调整完成后我们复制一个同样的Cube并把它旋转90度,调整至如下图所示
    在这里插入图片描述

  • 这样我们的坦克便制作完成了,然后我们在场景中新建一个Sphere并重命名为Projectile并把我们的子弹调整至合适的大小,添加上Rigidbody,并把我们制作完成的物体保存到文件夹下就可以了

脚本编写子弹的发射

  • 首先我们打开Tank的预制体并且新建一个空的Ganmeobject改名为ShotPos并把位置调整至合适的坐标
    在这里插入图片描述

  • 作为我们炮弹的发射点,然后我们在Tank下新建一个脚本命名为Tank并打开编写如下代码:

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

public class Tank : MonoBehaviour
{
	public GameObject projPrefab; // 要发射的子弹的预制体

	public Transform shotPos; // 要发射的子弹的位置

	private float lastFireTime; // 上一次发射的时间

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetButton("Fire1")
			&& Time.time - lastFireTime > 0.2f)
		{
			// 实例化(从预制体克隆)一个子弹
			var transProj = Instantiate(projPrefab).transform;

			// 设置子弹的位置在坦克设定好的炮口位置
			transProj.SetParent(this.transform, false);
			transProj.position = shotPos.position;
			Vector3 v = shotPos.forward * 100;
			transProj.GetComponent<Rigidbody>().AddForce(v, ForceMode.Impulse);

			Destroy(transProj.gameObject, 2f);

			lastFireTime = Time.time;
		}
    }
}
  • 然后保存并关闭我们的脚本,最后把我们的刚刚制作的预制体和ShotPos拖给脚本上的Public变量。

在这里插入图片描述

  • 最后打开游戏我们按下鼠标左键就能发射炮弹啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值