版权申明:

  • 本文原创首发于以下网站:
  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变量。

  • 最后打开游戏我们按下鼠标左键就能发射炮弹啦!

最新文章

  1. [LeetCode] Populating Next Right Pointers in Each Node 每个节点的右向指针
  2. CF724B. Batch Sort[枚举]
  3. 解决table不能换行的问题与CSS之自动换行总结
  4. Leetcode: Find Leaves of Binary Tree
  5. 制作.frameWork的最全最真实的解决办法
  6. jmeter测试手机app
  7. python-gdb
  8. IDEA - Project files cannot be watched (are they under network mount?)
  9. ViewDragHelper的使用
  10. (WinForm)文件夹状态监控,最小化到托盘,开机自启动
  11. CF(427D-Match &amp;amp; Catch)后缀数组应用
  12. 【转义字符】HTML 字符实体&amp;lt; &amp;gt: &amp;amp;
  13. shell编程之BASH变量(2)
  14. Solr 17 - Solr的时间为什么比本地少8小时 (附修改方法)
  15. EntityFramework Core是否可以映射私有属性呢?了解一下。
  16. python nose测试框架全面介绍十---用例的跳过
  17. Android SDK版本号与API Level 的对应关系-转
  18. [LeetCode] 176. Second Highest Salary_Easy tag: SQL
  19. C# 中的集合(Array/ArrayList/List&lt;T&gt;/HashTable/Dictionary)
  20. 用CAShapeLayer写股市K线图动画效果

热门文章

  1. springcloud-熔断监控Hystrix Dashboard和Turbine
  2. 【iOS】获取应用程序本地路径
  3. x32下PsSetLoadImageNotifyRoutine的逆向
  4. redis分布式锁&amp;队列应用
  5. unimrcp-voice-activity语音检测
  6. 初试kafka消息队列中间件二(采用java代码收发消息)
  7. pull解析案例
  8. 【KakaJSON手册】05_JSON转Model_05_动态模型
  9. 简述关于ASP.NET&#160;MVC与.NET CORE 的区别
  10. Linux与Unix到底有什么不同?