版权申明:

  • 本文原创首发于以下网站:
  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. springboot整合mybatis时无法读取xml文件解决方法(必读)

    转    http://baijiahao.baidu.com/s?id=1588136004120071836&wfr=spider&for=pc 在springboot整合myba ...

  2. Linux中bash shell环境变量

    别名 别名是命令的快捷方式.为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用.语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令.重要的 ...

  3. Spring WebClient vs. RestTemplate

    1. 简介 本教程中,我们将对比 Spring 的两种 Web 客户端实现 -- RestTemplate 和 Spring 5 中全新的 Reactive 替代方案 WebClient. 2. 阻塞 ...

  4. SPFA队列优化

    spfa队列优化(用来求最短路) 实现方法: 1.存入图.可以使用链式前向星或者vocter. 2.开一个队列,先将开始的节点放入. 3.每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对   ...

  5. NDK jni mk文件 so文件 巴啦啦 初体验

    概念JNI(Java Native Interface,Java本地接口),实现了Java和其他语言的交互(主要是C/C++),如:Java程序通过JNI调用C/C++编写的在Windows上运行的D ...

  6. 表单与v-model

    基本用法 vue.js提供了v-model指令,用于在表单类元素上双向绑定数据,例如在输入框上使用,输入的内容会实时映射到绑定的数据上 example1:修改input框内容,message会实时渲染 ...

  7. 优雅的对象转换解决方案-MapStruct及其入门(一)

    第一次看到 MapStruct 的时候, 我个人非常的开心. 因为其跟我内心里面的想法不谋而合. 1 MapStruct 是什么? 1.1 JavaBean 的困扰 对于代码中 JavaBean之间的 ...

  8. mysql limit分页查询效率比拼

    1.直接使用数据库提供的SQL语句 limit M ,N SELECT * from message limit 0 , 10 ; -- 0.044 SELECT * from message lim ...

  9. A solution to the never shortened to-do list

    I once told my younger sister my learning system, and the basic five doctrines of my methodology. Bu ...

  10. python多线程同步实例分析

    进程之间通信与线程同步是一个历久弥新的话题,对编程稍有了解应该都知道,但是细说又说不清.一方面除了工作中可能用的比较少,另一方面就是这些概念牵涉到的东西比较多,而且相对较深.网络编程,服务端编程,并发 ...