版权申明:

  • 本文原创首发于以下网站:
  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——坦克和子弹的制作以及炮台发射子弹的更多相关文章

  1. Fire Balls 08——子弹的消失,当子弹击中自身时不可发射子弹

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  2. Fire Balls 05——子弹的命中及后续效果

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  3. [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)

    一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...

  4. 用JS制作《飞机大作战》游戏_第3讲(玩家发射子弹)-陈远波

    一.公布上一讲中玩家飞机上.下.右移动实现的代码: /*=========================键盘按下事件 keycode为得到键盘相应键对应的数字==================== ...

  5. Demon_Tank (坦克移动发射子弹)

    using UnityEngine; using System.Collections; public class Tank : MonoBehaviour { //子弹预设体 public Game ...

  6. Demo_敌军坦克生成,坦克移动(可以拓展发射子弹,敌军消失获取分数或者添加动画,声音功能)

    using UnityEngine; using System.Collections; public class Tank : MonoBehaviour { //坦克面积结构体对象 public ...

  7. [知了堂学习笔记]_用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)

    一.创建敌方飞机 1.思考创建思路: 创建敌方飞机思路与创建玩家飞机思路一样: (1)思考敌方飞机具备什么属性: 敌方飞机的图片.坐标.飞行速度.状态(是否被击中) 设置小飞机被击中时消失时间.飞机可 ...

  8. 用JS制作《飞机大作战》游戏_第4讲(创建敌方飞机、敌方飞机发射子弹、玩家子弹击中敌方小飞机,小飞机死亡)-陈远波

    一.创建敌方飞机 1.思考创建思路: 创建敌方飞机思路与创建玩家飞机思路一样: (1)思考敌方飞机具备什么属性: 敌方飞机的图片.坐标.飞行速度.状态(是否被击中) 设置小飞机被击中时消失时间.飞机可 ...

  9. Fire Balls 08——音效的添加

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

随机推荐

  1. 在父页面用Iframe加载子页面时,将父页面的title替换成子页面title

    报告管理

  2. rabbitMQ_integeration_spring(七)

    参考了其他博主的资料,整理成完整的代码,直接拷贝就可以测试. 一.创建一个properties文件 mq.host=127.0.0.1 mq.username=root mq.password=roo ...

  3. Shell基本语法---常见的条件判断

    语法 [ 判断表达式 ] 文件夹或路径是否存在 -e 目标是否存在(exist) -d 是否为路径(directory) -f 是否为文件(file) [ -e text.sh ] || touch ...

  4. Spring框架使用@Autowired自动装配引发的讨论

    问题描述 有同事在开发新功能测试时,报了个错,大致就是,在使用 @Autowired 注入时,某个类有两个bean,一个叫a,一个叫b. 一般这种情况应该声明注入哪个bean,他没有声明,他不知道这个 ...

  5. scroll-苹果滑动卡顿

    2018年08月02日,程序小bug. 在移动端html中经常出现横向/纵向滚动的效果,但是在iPhone中滚动速度很慢,感觉不流畅,有种卡卡的感觉,但是在安卓设备上没有这种感觉; 一行代码搞定: - ...

  6. Is it a full physical image???

    My friend asked me why she could not find some important files in a physical image acquired from an ...

  7. 从js 讲解时间复杂度和空间复杂度

    1. 博客背景 今天有同事在检查代码的时候,由于函数写的性能不是很好,被打回去重构了,细思极恐,今天和大家分享一篇用js讲解的时间复杂度和空间复杂度的博客 2. 复杂度的表示方式 之前有看过的,你可能 ...

  8. IDED中配置SVN没有svn.exe解决办法

    首先在idea中配置svn时

  9. 用HTML5的Audio标签做一个歌词同步的效果

    HTML5出来这么久了,但是关于它里面的audio标签也就用过那么一次,当然还仅仅只是把这个标签插入到了页面中.这次呢就刚好趁着帮朋友做几个页面,拿这个audio标签来练练手. 首先你需要向页面中插入 ...

  10. CSS实现三栏布局(5种)

    常见的布局方式: float布局.Position定位.table布局.弹性(flex)布局.网格(grid)布局 那么我们就是用以上5种方式完成三栏布局,不过前提是左右宽度(假如左右宽度为300px ...