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

Posted raymondking123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fire Balls 05——坦克和子弹的制作以及炮台发射子弹相关的知识,希望对你有一定的参考价值。

版权申明:

  • 本文原创首发于以下网站:
  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变量。
    技术图片
  • 最后打开游戏我们按下鼠标左键就能发射炮弹啦!

以上是关于Fire Balls 05——坦克和子弹的制作以及炮台发射子弹的主要内容,如果未能解决你的问题,请参考以下文章

用javascript 面向对象制作坦克大战

unity,射手游戏

java课程设计--坦克大战

python制作坦克对战

学习 Python 之 Pygame 开发坦克大战

第18章 坦克大战2