目录

1、素材准备

2、调整大小设为预制体

3、创建空物体设置开火点

4、给物体创建移动脚本

5、为武器设计一个开火动画

6、给子弹预制体添加刚体组件

7、添加碰撞盒

8、编辑 shoot()

9、给预制体子弹添加移动脚本

10、给目标添加碰撞盒和刚体组件

Finsh


1、素材准备

三张图片

2、调整大小设为预制体

3、创建空物体设置开火点

4、给物体创建移动脚本

让手枪跟随鼠标移动

不带旋转角:

Unity 代码实现物体跟随鼠标移动_红叶920的博客-CSDN博客_unity物体跟随鼠标移动

带旋转角:

Unity让物体跟随鼠标移动_李公子lm的博客-CSDN博客_unity物体跟随鼠标

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Movement : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 此时的摄像机必须转换 2D摄像机 来实现效果(即:摄像机属性Projection --> Orthographic)Vector3 dis = Camera.main.ScreenToWorldPoint(Input.mousePosition); //获取鼠标位置并转换成世界坐标dis.z = this.transform.position.z; //固定z轴this.transform.position = dis; //使物体跟随鼠标移动}
}

可以看到,开火点会跟随手枪移动

5、为武器设计一个开火动画

动画变量

脚本控制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Movement : MonoBehaviour
{public Animator animator;//加载动画组件bool isFire;void Start(){isFire = false;}// Update is called once per framevoid Update(){// 此时的摄像机必须转换 2D摄像机 来实现效果(即:摄像机属性Projection --> Orthographic)Vector3 dis = Camera.main.ScreenToWorldPoint(Input.mousePosition); //获取鼠标位置并转换成世界坐标dis.z = this.transform.position.z; //固定z轴this.transform.position = dis; //使物体跟随鼠标移动if (Input.GetMouseButtonDown(0)){//按下鼠标左键isFire = true;animator.SetBool("Fire", isFire);}else{isFire = false;animator.SetBool("Fire", isFire);}}
}

开火按钮也可写做

 if (Input.GetButtonDown("Fire1"))

因为默认设置的Fire1就是鼠标左键

也可以改为其他按键(space-空格或者abcd……)

6、给子弹预制体添加刚体组件

Collision Detection改为Continuous为了在快速移动中检测所有物体。

Constraints中的勾选是为了限制沿z轴的旋转。

7、添加碰撞盒

8、编辑 shoot()

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Movement : MonoBehaviour
{public Animator animator;//加载动画组件public Transform firePoint;//获取开火点位置public GameObject bulletPrefeb;//获取子弹预制体bool isFire;void Start(){isFire = false;}// Update is called once per framevoid Update(){// 此时的摄像机必须转换 2D摄像机 来实现效果(即:摄像机属性Projection --> Orthographic)Vector3 dis = Camera.main.ScreenToWorldPoint(Input.mousePosition); //获取鼠标位置并转换成世界坐标dis.z = this.transform.position.z; //固定z轴this.transform.position = dis; //使物体跟随鼠标移动if (Input.GetButtonDown("Fire1")){//按下鼠标左键isFire = true;animator.SetBool("Fire", isFire);//开火逻辑Shoot();}else{isFire = false;animator.SetBool("Fire", isFire);}}//开火函数void Shoot(){//预制体实例化Instantiate(bulletPrefeb, firePoint.position, firePoint.rotation);//预制体文件、位置、旋转}
}

很鬼畜,子弹刚出来就掉下去了,因此,我们要给子弹添加速度

9、给预制体子弹添加移动脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Bullet : MonoBehaviour
{public float speed = 20f;public Rigidbody2D rb;void Start(){rb.velocity = transform.right * speed;//让子弹沿着初始方向飞一会~}void OnCollisionEnter2D()//发生碰撞,则销毁子弹{Destroy(gameObject);}void OnTriggerEnter2D(){//使用时需要在刚体组件里面勾选TriggerDestroy(gameObject);}
}

刚体组件拖过来

10、给目标添加碰撞盒和刚体组件

Finsh

Unity笔记(10):SHOOT GAME EXAMPLE【2D】相关推荐

  1. Unity笔记(5):Make Character Animation【2D】

    目录 1.新建项目 2.导入资源 复习一下前两篇笔记: 3.搭建场景 4.控制角色移动 5.制作角色动画 发现问题: 解决问题: 1.新建项目 2.导入资源 Sunny Land | 2D Chara ...

  2. Unity编写冰球对战游戏 2D版

    Unity编写冰球对战游戏 2D版 Unity是一款非常方便.简洁.低成本的一款游戏引擎.在这里,向大家介绍这样用Unity这个引擎编写冰球对战游戏 因为Unity这个引擎可以编写3D游戏 ,同样的也 ...

  3. Unity Asset Store精品素材资源——2D图标素材篇(头像、装备与物品、技能)

    本文推荐Unity Asset Store里优质的2D图标素材,从人物头像.装备与物品.技能等几个方面进行分类精选.继续下面内容之前,个人首推REXARD的图标素材,这家开发商包含各类图标素材,高产又 ...

  4. C#和Unity游戏开发者大师班2021 (2D,3D和FPS)

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小:11.1 GB |时长:22h 31m 含项 ...

  5. thinkphp学习笔记10—看不懂的路由规则

    原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...

  6. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)--整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  7. springmvc学习笔记(10)-springmvc注解开发之商品改动功能

    springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...

  8. Python 网络爬虫笔记10 -- Scrapy 使用入门

    Python 网络爬虫笔记10 – Scrapy 使用入门 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接: ...

  9. Spring-学习笔记10【Spring事务控制】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  10. MyBatis-学习笔记10【10.JNDI扩展知识】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

最新文章

  1. 这届百度AI究竟什么水平?
  2. 常用的php开发工具有哪些?
  3. Java线程详解(14)-信号量
  4. Madagascar环境下编程
  5. 同一公司代码下工厂间的库存转储 (轉載)
  6. 漫画:什么是鸡尾酒排序
  7. 如何获取UIWebView中全屏播放视频事件
  8. java -jar 内存溢出_JAVA系统启动栈内存溢出-StackOverflowError
  9. Intellij IDEA 导入或运行流式处理框架storm以及java.lang.NoClassDefFoundError报错的解决方案
  10. 市场部和销售部的区别
  11. php mysql 代理_让PHP像C罗一样操作MySQL之ProxySQL
  12. CMU Database Systems - Concurrency Control Theory
  13. 在美国公司架构中,LLC、LLP 和 Corporation 的区别何在?
  14. 酒店客房管理信息系统
  15. hadoop put命令的格式_hadoop Shell命令详解
  16. 遵循学术规范,避免学术不端
  17. 虚拟机共享WiFi网路的NAT连接方法
  18. Excel如何统计数据个数
  19. 抖音小店入驻条件及费用最新版,2022抖音开店,商家入门指南
  20. 山东科技大学Problem B: 打印字母菱形图案

热门文章

  1. Unity Leap开发-核心Leap组件
  2. excel插件计算数据95值
  3. 翻斗式雨量计在智慧农业中的应用
  4. 吴恩达经典ML课全面升级!更新为Python实现,加入更直观的视觉教学
  5. hashmap的理解
  6. 从Matlab的Fig图片中提取数据,并保存成csv文件
  7. hive分区表详细介绍
  8. 自用资源整理 - 君子性非异也,善假于物也
  9. opencv+gup
  10. 第一章 MOS管模型