知识点:

  1. 刚体组件(rigidbody),受力和碰撞的组件
  2. 触发器(Trigger),开启后物体碰撞效果取消,但仍会返回碰撞消息
  3. 复制物体对象:var box = Instantiate(对象);
  4. 设置对象坐标位置:box.transform.position = new Vector3(三维坐标点);
  5. 绘制光标:绘制是从左上角为原点开始绘制,为了在准心射击,坐标点做些偏移。
    Cursor.SetCursor(MyCursor, new Vector2(MyCursor.width / 2, MyCursor.height / 2), CursorMode.Auto);
  6. 判断按键:Input.GetButtonDown(按键);
  7. 获取屏幕射线对象:Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  8. 判断射线的物理碰撞:
    Physics.Raycast(射线对象,out 碰撞物体, 射线最长距离)
    Physics.Raycast(ray,out Hit, 50)
  9. 给物体速度、方向:射线碰撞坐标和子弹当前坐标只差形成一个向量,确定速度方向,然后乘上速度大小
    物体对象.GetComponent<Rigidbody>().velocity = 速度方向 * 速度大小;
    bullet.GetComponent<Rigidbody>().velocity = (Hit.point - bullet.transform.position) * 5;

步骤:

  1. 准备物体和子弹、地板,物体和子弹存储对象后,就可以删掉
    子弹和物体都要添加刚体组件

  2. 创建GameObject对象,存储脚本

  3. 设置对象变量,把物体对象赋值给变量

  4. 设置Quad墙体,这样鼠标点击任何位置都会触发射线碰撞事件

    取消墙体渲染,这样墙体就是透明效果。
    开启触发器,这样子弹就不是撞墙,会穿过墙体。

  5. 设置光标,找一张透明底的贴图,设置成光标,再赋值给脚本变量

  6. 优化项目:删除摄像机视野外的物体对象,节省资源。删除脚本添加在物体内。



脚本代码

HitPlayGame.cs

public class HitPlayGame : MonoBehaviour
{//箱子public GameObject Box;//球体(子弹)public GameObject Bullet;//光标public Texture2D MyCursor;// Start is called before the first frame updatevoid Start(){for(int i = 0; i < 5; i++){for(int j = 0; j < 5; j++){//复制物体对象,并返回该物体对象,参数:被复制的对象var box = Instantiate(Box);//设置物体的位置box.transform.position = new Vector3(-2f+i, 0.5f+j, 4.5f);}}//绘制光标Cursor.SetCursor(MyCursor, new Vector2(MyCursor.width / 2, MyCursor.height / 2), CursorMode.Auto);}// Update is called once per framevoid Update(){//按一下鼠标左键,发射一次子弹if (Input.GetButtonDown("Fire1")){复制物体对象,并返回该物体对象,参数:被复制的对象var bullet = Instantiate(Bullet);//设置物体的位置bullet.transform.position = Camera.main.transform.position;//获取屏幕射线对象Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//碰撞物体变量RaycastHit Hit;//判断射线是否有碰撞对象if(Physics.Raycast(ray,out Hit, 50)){//给子弹对象一个方向和速度bullet.GetComponent<Rigidbody>().velocity = (Hit.point - bullet.transform.position)*5;}}}
}

DestoryObj.cs

public class DestoryObj : MonoBehaviour
{/// <summary>/// 超出摄像机视野执行/// </summary>private void OnBecameInvisible(){//删除对象Destroy(gameObject);   }
}

Unity3D 射击游戏练习实例相关推荐

  1. unity3D射击游戏

    射击游戏 1.Enemy using UnityEngine;[AddComponentMenu("MyGame/Enemy")] public class Enemy : Mon ...

  2. unity游戏开发毕设_基于Unity3D射击游戏开发与实现

    摘  要 unity3D是本次毕业设计的主要的软件,这个软件以使用,医用和跨平台为主,unity还具有一个性能非常领先的游戏引擎,价值不菲,是一个完全集成的专业应用,正由于它强大的专业游戏开发引擎能大 ...

  3. Unity3D——射击游戏(多地图,多人物,枪支切换,驾车,扔手雷等功能,堪比小型和平精英)

    演示1: 演示2: 演示3: 演示4: 源代码和运行程序 链接:https://pan.baidu.com/s/1QZ9UGWPAHO1zRgW5qNCjcw?pwd=4m31  提取码:4m31 本 ...

  4. Unity3D射击游戏《全民飞机大战》截图

  5. C#游戏编程之创建一个简单的卷轴射击游戏

    前几天很多朋友要求贴一篇有关C#游戏开发的实例.本篇文章是创建一个简单的卷轴射击游戏开发实例,内容比较完整,分享给大家,不过篇幅有些长,可以慢慢看哈!本文除CSDN博客外,任何媒体和出版物禁止转载和使 ...

  6. Unity3D FPS Game:第一人称射击游戏(一)

    耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...

  7. cocos2d-x游戏实例(22)-纵版射击游戏(9)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇的纵版射击游戏,本篇加入几个敌人的类 ...

  8. cocos2d-x游戏实例(21)-纵版射击游戏(8)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇为敌人添加了子弹,本篇为主角添加受伤并添 ...

  9. cocos2d-x游戏实例(20)-纵版射击游戏(7)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 上一篇我们为敌人加上了运动轨迹并且敌人可以重复 ...

最新文章

  1. jQuery对象插件封装步骤
  2. android 监听网络状态
  3. ap模式和sta模式共存_锐捷AP缺省VLAN和用户VLAN那些事儿 | 运维实战家
  4. 让批处理文件(.bat)程序无窗口(隐藏/静默)运行
  5. Ansible详解(九)——Ansible配置文件详解
  6. Use __doPostBack() As A Bridge
  7. 27. 搭建Git服务器
  8. C++概述部分内容记录
  9. kitti数据集label解析和可视化教程
  10. 阿里云服务器Discuz论坛程序安装
  11. pyltp依存句法分析_依存句法分析 python pyltp实现
  12. 一点点读懂thermal(一)
  13. 电脑安装完软件打不开怎么办
  14. Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)
  15. 1024 致敬程序员
  16. Apollo 星火计划踩坑记录 dreamview启动报错“No such file or directory: ‘ping‘: ‘ping‘”
  17. Web Confidential for mac(密码信息管理软件)
  18. python模拟输入文本内容(打破复制粘贴限制)
  19. 来玩个游戏,解锁IT女~
  20. matlab中找矩阵最小值,matlab寻找矩阵最小值

热门文章

  1. Android解析服务器Json数据实例
  2. PHP合并多个PDF文件
  3. 小白也能轻松上手的Prometheus教程
  4. RTC实时时钟实验学习笔记一
  5. CodeForces - 1005A . Tanya and Stairways
  6. Fraction分数类II
  7. vue+element模仿电商商城,前后端分离实现,下单微信扫码支付
  8. 有效扩展:来自预训练和微调变换器的见解、rct.ai训练出5亿参数的BERT-X模型
  9. 沈航计算机复试刷人,考研复试刷人严重吗被刷机率大吗
  10. 批量微信过滤开通助手 急速微信筛选开通助手