1,前言

制作坦克发射炮弹
参考自–b站视频

2,思路

发射炮弹的思路其实就是:
实例化一个炮弹出来,然后给这个炮弹添加一个向前的力,使其发射

3,步骤

3.1,发射位置

首先需要给PlayerTank(玩家坦克)创建一个空的子物体(Empty Child)
命名为ShootPoint,这个ShootPoint就是实例化炮弹的位置,炮弹会在这个位置被实例化出来,然后通过脚本给它一个力。
创建完之后就需要调整一下这个发射点的位置,使它在坦克的炮管发射口的正前方即可(又或者调整到你想要的位置和角度)

3.2,炮弹模型

然后就是炮弹的模型,我们可以去Unity的Asset Store中的寻找我们需要的炮弹模型,下载导入即可。这里我用的是Unity官方教程双人坦克小游戏中的炮弹模型。
导入之后给这个炮弹模型添加上Box Collider和Rigibody还有Light组件
Box Collider是为了方便炮弹命中坦克时进行碰撞判定的
Rigibody是为了让炮弹有物理属性
Light是为了让炮弹飞行时带有光效,纯粹是酷!
然后将炮弹存为Prefab方便后面使用

3.3,编写脚本

接下来就是编写脚本(MainTankWeapon),使得按下空格键的时候就会实例化一个炮弹并进行发射。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MainTankWeapon : MonoBehaviour
{//炮弹Prefabpublic GameObject shell;//发射时给炮弹施加的力public float shootPower;//炮弹发射的位置public Transform shootPoint;//炮弹发射间隔public int fireTime=0;    // Update is called once per framevoid Update(){if (fireTime<=999){fireTime++;}//防止炮弹进行无间断发射//按下空格键就会发射炮弹if (fireTime>=30 && Input.GetKeyDown(KeyCode.Space)){Shoot();fireTime = 0;}}//发射炮弹的方法void Shoot(){//这是实例化出来的炮弹GameObject newShell=Instantiate(shell, shootPoint.position, shootPoint.rotation) as GameObject;//获取炮弹的刚体组件Rigidbody r =newShell.GetComponent<Rigidbody>();//给炮弹施加一个力,使其飞行r.velocity = shootPoint.forward * shootPower;}
}

3.4,挂载脚本

接下来就是将脚本挂在在PlayerTank上
并通过属性菜单进行赋值
将ShootPoint和炮弹Prefab(我这里的是Shell1)拖到对应的框即可
并在ShootPower框上填上相应的值,表示炮弹发射时施加的力。
力越大,炮弹飞的越远越快

未完待续…

(四)坦克大战--(2)发射炮弹相关推荐

  1. php 坦克大战,js坦克大战以实现炮弹击中目标消失并且记分

    js坦克大战以实现炮弹击中目标消失并且记分 话不多说 下载下面的代码包就能看到效果, 效果图: js代码如下:/**初始化*/ var shell=document.getElementById('t ...

  2. C++实现坦克大战(超详细)(文末附源码!!!)

    一.成果展示 二.开发环境及工具 C++开发,使用工具为vs2019的community版本,坦克大战需要借助EasyX库来完成坦克大战的图形绘制. 三.游戏规则设定 (1)玩家移动及发射炮弹: 单人 ...

  3. canvas+js实现简单的坦克大战小游戏

    使用canvas和js实现经典的坦克大战并不难,坦克和炮弹的绘制可以使用canvas的里API画出,而坦克的移动和炮弹的发射可以依赖于键盘事件和定时器来实现. 在这里我要实现的坦克大战是双人模式,有木 ...

  4. python3坦克大战

    # coding = utf-8import pygame, sys, timefrom pygame.locals import *from random import randint'''坦克大战 ...

  5. 我所知道坦克大战(单机版)之解决坦克出界问题、添加机器坦克、将机器坦克击毙...

    本章目的 解决坦克出界问题 让坦克发射多发炮弹问题 一.解决坦克出界问题 我们发现现在当前版本,如果控制这个坦克一直往左或者往右的话是会移出边界的 那么怎么解决这个问题呢?其实与子弹有异曲同工之处 p ...

  6. 我所知道坦克大战(单机版)之画出炮筒、让坦克发射多发炮弹、让炮弹消亡...

    本章目的 使用炮筒来确定坦克目前的方向 让坦克发射多发炮弹问题 一.画出炮筒 一般坦克初始位置是不同的,但是我们目前的射击方向是与移动方向一致的 这就导致比较怪异,我们应该是初始时有一个射击方向,比如 ...

  7. 微信小游戏制作坦克大战(五)敌方坦克可以发射炮弹

    微信小游戏制作坦克大战(五)敌方坦克可以发射炮弹 在资源管理器中复制炮弹,重命名为敌人坦克的炮弹. 修改敌方坦克的积木 给敌方坦克炮弹添加事件 现在,敌方坦克已经可以自动发射炮弹啦. 下一篇文章:微信 ...

  8. 我所知道坦克大战(单机版)之解决坦克碰撞时穿透问题、发射超级炮弹、添加坦克生命值...

    本章目的 解决坦克相撞穿透问题 发射超级炮弹 添加坦克生命值 一.解决坦克碰撞时穿透问题 我们发现目前当两坦克碰撞在一块的时候,会直接穿透过去根据上一个思路回到原位置,我们能否进行更加智能一些?当坦克 ...

  9. java炮弹_Java坦克大战 (四) 之子弹的产生

    在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学完J2SE的小伙伴们一点启示! 坦克大战V0.4实现功能: 1.写一个Missile类,产生一个可运动的子 ...

最新文章

  1. BCH收银APP已在Android系统上下载超10000次
  2. React入门0x014: Fragment
  3. OpenCV-自定义harris检测
  4. InstallShield 2011新功能试用(3)- Script Editor Intellisense
  5. python画圆形螺旋线_这个Python项目,一秒生成可爱像素风图片
  6. LeetCode每日训练1——爬楼梯问题(2020.7.1)
  7. NodeJs Express 4.x 入门
  8. Java 11即将发布的功能–启动单文件源程序
  9. 大数据如何影响百姓生活
  10. 个人知识整理(javascript篇初识)
  11. 【UIKit】UITableView.06
  12. Effective_STL 学习笔记(二)小心对 “容器无关代码” 的幻想
  13. js微信抢红包脚本代码_微信抢红包插件示例代码及其实现原理
  14. 微波射频学习笔记2--------传输线理论
  15. 程序员 开发人员 在线工具箱
  16. FreeRTOS学习笔记——FreeRTOS 时间管理
  17. 树莓派pico--PIO入门
  18. CTS测试中CameraTest#testPreviewFpsRange项
  19. Porteus Kiosk
  20. JAVA开发(后端):微信小程序API调用详细分析及步骤

热门文章

  1. 【iOS高级资深工程师面试篇】④、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 内存管理部分2/2 引用计数-弱引用-自动释放池-循环引用
  2. 矢量三维电磁铁的技术参数
  3. Spring - ApplicationContextInitializer 扩展接口
  4. Arduino IDE安装过程及esp32下载
  5. Quartus II not support the EP2C5F256I8 device,如何解决
  6. 编译原理实验三:对完整程序进行词法分析并输出对应的二元组
  7. 初试Ext JS 6.6的NPM版(一)
  8. 群晖nas 配置hfs
  9. 什么是外边距重叠?重叠的结果是什么?
  10. 用Java写一个稍微好一点点的圣诞树