Fire Balls 06——坦克和子弹的制作以及炮台发射子弹

版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明

目标:

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

坦克和子弹预制体的制作

  • 首先我们先新建一个空的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变量。
  • 最后打开游戏我们按下鼠标左键就能发射炮弹啦!
posted @ 2019-09-02 11:04  优梦创客  阅读(634)  评论(0编辑  收藏  举报