Unity 简单实现子弹射击
Unity 简单实现子弹射击
一、具体步骤:
1、 创建预制体:Assets >> Create >> Prefab 并命名,添加碰撞(Box Collider 等)并勾选 Is Trigger、添加钢体(Rigidbody)并取消 Use Gravity(暂时不做重力计算);
2、 预制体添加脚本:在Project下找到新创建的预制体,点击AddComponent,添加移动和销毁脚本;
3、 创建空物体或者Cube等等,并调整位置、旋转、缩放等使其和枪口位置一致并作为枪的子物体(移动过程中确保子弹的初始位置始终在枪口位置)即可;
4、 移动角色挂在射击脚本,拖入预制体(1)和创建的空物体(3);
5、 创建Cube作为NPC,挂在被子弹射中脚本,实现被子弹这种显示血量减少直到挂掉。
说明:所有提到脚本都在附录;
二、脚本解释:
Destroy:
1、 没碰撞,特定时间内自动销毁:
Destroy (gameObject,5); //5秒自动销毁
2、触发销毁(射中,碰撞)
void OnTriggerEnter( Collider GetObj)
{
if (GetObj != null) //检测到子弹碰撞销毁
Destroy (gameObject);
}
Move:
GetComponent<Rigidbody>().velocity = transform.up * Speed;
//子弹移动
Instantiate:
Instantiate (Bullet, BulletStart.position,
BulletStart.rotation);
//克隆预制体 并赋予位置旋转信息
附录:脚本
射击脚本:
using UnityEngine;
using System.Collections;
using System;
public class Fire : MonoBehaviour {
Ray ray;
string getObjName;
RaycastHit hit;
public GameObject Bullet;
public Transform BulletStart;
void Start () {
}
void Update () {
if (Input.GetMouseButtonDown (0)) {
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
getObjName = hit.transform.name;
}
Instantiate (Bullet, BulletStart.position, BulletStart.rotation);
}
}
}
预制体脚本1:移动
using UnityEngine;
using System.Collections;
public class Done_Move : MonoBehaviour {
public float Speed;
void Start () {
GetComponent<Rigidbody>().velocity = transform.up * Speed;
}
}
预制体脚本2:销毁
using UnityEngine;
using System.Collections;
public class Out_Destroy : MonoBehaviour {
void Start () {
}
void Update()
{
Destroy (gameObject,5);
}
void OnTriggerEnter( Collider GetObj)
{
if (GetObj != null)
Destroy (gameObject);
}
}
NPC被子弹射中脚本
using UnityEngine;
using System.Collections;
public class NPC_Attacked : MonoBehaviour {
private string healthString;
private int heathnum;
void Start () {
heathnum = 100;
healthString = " ";
}
void Update () {
}
void OnTriggerEnter( Collider GetObj)
{
//子弹射中判断
if (GetObj.name == "Capsule(Clone)") {
// "Capsule(Clone)"为创建的预制体名字加“(Clone)”
numAdjust( heathnum,10);
}
}
void numAdjust( int health,int numDecrease)
{
if (health > 0) {
heathnum -= numDecrease;
healthString = "当前生命值 : + heathnum.ToString ();
} else {
healthString = "嗨,哥们,你挂了";
Destroy (gameObject,2);
}
}
void OnGUI()
{
GUI.Label (new Rect(600,200,100,20),healthString);
}
}
Unity 简单实现子弹射击相关推荐
- 使用Playmaker实现简单的子弹射击
使用Playmaker实现简单的子弹射击 第一步:创建场景 第二步:创建子弹 第三步:给子弹添加playmakerFSM 第四步:将子弹设置为预制体 第五步:创建枪,并添加FSM 第六步:运行 调试 ...
- unity判断鼠标移动方向_【反向元气骑士】用unity实现俯视角射击是一种怎样的体验...
哈喽大家好我是yumir. 最近沉迷元气骑士,自从官方把各种"bug"修复之后,这个游戏对我这种手残玩家来说实在是太难了.既然打不过,那我就自己写一个,不就是俯视角射击吗,分分钟给 ...
- unity fixedupdate_3D俯视角射击——用Unity还原东方弹幕(上)
前言 之前我们的专栏中介绍过2D的俯视角射击,这次就来试试在3D场景下的实现.移动射击的实现方法差不多,所以本次的主要目标是在3D场景下还原东方的符卡(弹幕)效果. 我们先来看看最终结果: 可配置的弹 ...
- unity 3d原创制作射击游戏(全完整版+安卓apk编译)
目录 文章目录 目录 实验一 (1)设计如下UI界面,其中包含了canvas.Panel.Text.Button.Image.RawImage等UI元素 (2)实现点击Play按钮转换场景,点击Exi ...
- 【Unity】第三人称射击游戏开发过程之开火设计(TPS.S.P2)
[Unity]第三人称射击游戏开发过程之开火设计(TPS.S.P2) 枪械的开火 开火流程 开火前的准备 实体子弹的准备 开火逻辑 这一章我们来设计基础的枪械功能. 枪械的开火 我现在选择的武器是41 ...
- C#游戏编程之创建一个简单的卷轴射击游戏
前几天很多朋友要求贴一篇有关C#游戏开发的实例.本篇文章是创建一个简单的卷轴射击游戏开发实例,内容比较完整,分享给大家,不过篇幅有些长,可以慢慢看哈!本文除CSDN博客外,任何媒体和出版物禁止转载和使 ...
- Unity 简单易用的插件汇总
Unity 简单易用的插件汇总 2dToolKit,是一款2D开发组件,它具有很强的灵活性,可以让开发者在Unity中进行2D开发 PlayerMaker,是一个可视化脚本工具,开发者可以使用它很快的 ...
- java第一人称射击_[转] Unity实践 --- 第一人称射击游戏_
一. 环境 地图资源,包含了全地图以及灯光.天空盒子. 扩展部分. 不可穿透的部分需要在bake时设置为static. 二. 设置 1. 相机 1> 主相机 挂载控制视角的c#组件. tag为m ...
- android实现带纹理的运动轨迹,基于SceneForm实现子弹射击(绘制子弹运行轨迹)...
基于 SceneForm 实现的子弹射击(绘制子弹运行轨迹) Sceneform 框架很强大,不了解 Sceneform 的时候,觉得要想做 3D 场景需要会 OpenGL,而 OpenGL 的学习曲 ...
最新文章
- Android开源项目
- oracle中各种函数,oracle中常用函数大全
- 装载向导_麦德美爱法:异构集成时代的高阶封装载板金属化工艺
- Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子
- Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml
- 【终结版】C#常用函数和方法集汇总
- php 时间错误,PHP xdebug调试trace记录时间错误
- 关于Jquery中animate可以操作css样式属性总结
- (5)verilog语言编写呼吸灯
- sql 执行 delete 的时候,结合子查询 exists ,怎样支持别名呢?
- 二年级孩子适合学C语言吗,小孩子适合学习编程吗?孩童时期对变成的接受程度有多少呢?...
- Spring Initializr文档翻译及源码解读
- dlibdotnet 人脸相似度源代码_HAAR与DLib的实时人脸检测之实现与对比
- LIN总线、CAN总线、FlexRay总线和MOST总线---汽车四大总线
- BladeX框架源码分析--00、包结构
- AutoCAD2014下载和安装教程(官方中文完整版)
- 快学Scala 学习笔记-1: (第一章到第三章)
- 强密码生成器的设计与实现
- 【spring 的 init and destory 方法】
- 使用ssh对服务器进行登录