[Unity3D]Unity3D官方案例SpaceShooter开发教程

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
1、先导入SpaceShooter的环境资源,将Models下的vehicle_playerShip放到Hierachy窗口,改名为Player.Rotation x改为270,为Player添加mesh collider组件,将vehicle_playerShip_collider放到Mesh属性里面,为Player添加刚体,去掉重力的勾选,将Prefebs中的engines_player放到Hierarchy,并调好位置。
2、进入3D视图,将MainCamera中的Projection改为Orthographic,摄像机视图变为矩形视图。将Camered的背景改为黑色。将Player的Rotation x 改为零。Camera的Rotation改为90,移动摄像机,调节位置在Game视图中查看。通过调节Camera的Size来调节Player的大小,通过调节Camera的Position来调节Player的位置,适当即可。
3、添加一个Directional Light,改名为Main Light,然后reset,改Rotation x为20,y为245.Intensity改为0.75,同理继续添加一个,改名为Fill Light,将Rotation y改为125,点开color将RGB分别改为128,192,192.在添加一个Rim Light,将Rotation x,y分别改为345,65,Indensity改为0.25,Ctrl+Shift+N创建一个GameObject,改名为Light,将三个Light放进去。
4、添加一个Quad组件,改名为Background,rotation x 90,添加一个纹理tile_nebula_green_dff,将tile_nebula_green_dff中的shader改为Unlity/Texture,将Position y 改为-10,将Scale x, y改为15和30,这是纹理图片的大小比例决定的,1:2。
5、创建GameObject,改名为GameCotroller,添加脚本GameCotroller.cs,为Player添加一个新的脚本,命名为PlayerController,脚本为:
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Boundary
{
   
    public float zMin = -3.3f;
    public float zMax = 14f;
    public float xMin = -6.5f;
    public float xMax = 6.5f;
}
public class PlayerController : MonoBehaviour {
    public float speed = 10f;
    public Boundary bound;
    void FixedUpdate()
    {
       
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(h, 0, v);
        rigidbody.velocity = speed * move;
        rigidbody.position = new Vector3(Mathf.Clamp(rigidbody.position.x, bound.xMin, bound.xMax), 0, Mathf.Clamp(rigidbody.position.z, bound.zMin, bound.zMax));
    }
}
代码心得:限制需要在Game视图移动来调节。记住了rigidbody的velocity方法,限制Player的飞行范围可通过rigidbody.position来控制。学习了Mathf.Clamp(rigidbody.position.x, bound.xMin, bound.xMax)的用法。学习了系列化[System.Serializable]在窗口视图中显示。
6、创建一个GameObject,改名为Bolt,创建一个GameObject,改名为VFX,放到Bolt下,将fx_lazer_orange_dff拖到VFX Inspector中,将Shader改为Particles/Additive可将背景设置为透明。给Bolt加上RigidBody,去掉use Gravity.添加Mover脚本:
using UnityEngine;
using System.Collections;
public class Mover : MonoBehaviour {
    public float speed = 20f;
 // Use this for initialization
 void Start () {
        rigidbody.velocity = transform.forward * speed;
 }
}
再添加一个Capsule Collider用于碰撞检测,将Radius和height的值设为0.05,0.55.direction设为Z-Axis,现在报错,是因为FBX的MeshRenderer和Bolt的Capsule Collider冲突,删掉FBX的MeshRenderer。注意一点要想把改变的同步到Prefabs中就得点击应用。
开始添加子弹,创建新的GameObject,命名为SpawnPos放到Player下面。继续编辑PlayerController脚本。代码如下:
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Boundary
{
   
    public float zMin = -3.3f;
    public float zMax = 14f;
    public float xMin = -6.5f;
    public float xMax = 6.5f;
}
public class PlayerController : MonoBehaviour {
    public float speed = 10f;
   
    public Boundary bound;
    public GameObject bolt;
    public Transform spawnPos;
    void Update()
    {
        if(Input.GetButton("Fire1"))
        {
            Instantiate(bolt, spawnPos.position, spawnPos.rotation);
        }
    }
    void FixedUpdate()
    {
       
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(h, 0, v);
        rigidbody.velocity = speed * move;
        rigidbody.position = new Vector3(Mathf.Clamp(rigidbody.position.x, bound.xMin, bound.xMax), 0, Mathf.Clamp(rigidbody.position.z, bound.zMin, bound.zMax));
    }
}
问题:运行游戏,发现游戏的子弹是散的。将Bolt里面的is Trigger勾选上可防止这种情况的出现。现在发现子弹的发射过于连续,添加代码:
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Boundary
{
   
    public float zMin = -3.3f;
    public float zMax = 14f;
    public float xMin = -6.5f;
    public float xMax = 6.5f;
}
public class PlayerController : MonoBehaviour {
    public float speed = 10f;
   
    public Boundary bound;
    public GameObject bolt;
    public Transform spawnPos;
    public float fireRate = 0.1f;
    private float nextFire;
    void Update()
    {
        if(Input.GetButton("Fire1") && Time.time > nextFire)
        {
            nextFire = Time.time + fireRate;
            Instant
Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(中) (上)部分主要介绍了素材的添加以及基本的移动与涉及功能,这部分关注事件的实现(如碰撞检测)。 传送门: 太空射击(Space Shooter)流程介绍与代码分析(上) 太空射击(Space Shooter)流程介绍与代码分析(中) 太空射击(Space Shooter)流程介绍与代码分析(下) 6.边界的设定 在上述过程中,若一直发射子弹,在Hierarchy中会一直出 阅读详情

相关推荐

Unity 3D 官方教程——Space Shooter学习记录

写到凌晨2点,结果今天一打开博客,整个Space Shooter文章全不见了,没有记录,没有回收站。 注意,我每写一小节都会立即保存文章。真不知道这CSDN博客是什么奇萌的风格。 还好昨晚写完后有备份,不然今天抑郁一天。 以下是正文。 ---------------------------------------------------- unity 官方教程Space Shooter ...

3019

Unity SpaceShooter太空打飞机游戏

一个太空射击类型的游戏,使用unity3d开发,可以为自学unity3d者提供一份源码

Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(上)

最近开始接触游戏制作,用Unity制作一些简单的游戏进行入门。这几篇博客总结了Space Shooter的制作流程,并对代码进行了分析。一是方便自己日后进行回顾与补充,二是为了让让更多的游戏爱好者接触游戏开发,少走弯路。 Space Shooter是一个入门级的项目,很适合新手学习。借由这款游戏,我们可以了解Unity中的界面以及常用操作,并对整个引擎有个笼统的认知,代码只需要一些编程基础,门槛

s1314_JHC的博客 7338

unity太空飞机射击游戏

unity太空飞机射击游戏(免积分下载),有分数和生命值,飞机可以对其他飞行物进行射击,分数提高后飞机可以升级,具体情况请看我的文章介绍

Unity官方实例教程 Space Shooter(太空射击游戏)

Space Shooter 太空射击 传送门 Unity官方实例教程 Space Shooter(一) Unity官方实例教程 Space Shooter(二) Unity官方实例教程 Space Shooter(三) Unity官方实例教程 Space Shooter(四) Unity官方实例教程 Space Shooter(五) 前言 游戏截图 S

Android系统攻城狮 1万+

Unity官方实例教程 Space Shooter

前言 如何下载和导入资源 如何设置游戏视窗大小 添加了飞船和飞船喷射效果 Capsule Collider和Mesh Collider的用法 但是我们还没有为游戏添加任何的操作,现在还只是一个可以看,但不能玩的版本,所以今天我就让游戏可以玩起来! 你将学到什么? 如何控制飞船移动 如何限制飞船的

Vic 2387

Unity3D官方案例1-星际航行游戏Space Shooter

Unity3D官方案例1-星际航行游戏Space Shooter 【1】学习中的使用的类 1.Input:使用此类读取常规游戏设置中的轴,访问移动设备的多点触控和加速度。 本例使用到的方法: GetAxis(stringaxisName):获取键盘和操纵杆...

aixie7063的博客 1041

kinect 连接unity3d自制小demo篮球VS热狗

游戏封面 B站游戏视频:体感游戏 热狗vs篮球(CXK)kinect连接unity3d入门demo 游戏截图 通过制作这个游戏学习unity3d制作,使用官方自带Space Shooter 教程 重要的话说在前头 参考博客:对 Unity 太空射击游戏的实践 B站熟肉教学视频:unity3d官方案例_太空射击【unity官方案例精讲】 我的游戏视频:体感游戏...

韩旭051的博客 1966

【个人作品】 Unity3D项目 SpaceShooter

本项目是在Unity3D官方教学项SpaceShooter上的扩展 游戏整体上借鉴模仿了以前街机射击游戏 【彩京打击者】 【雷电】 以及【东方】系列的弹幕射击游戏 素材皆来自于网络上的免费素材,比如模型、音效、特效等等 实现了追踪导弹、激光穿透、道具拾取、保险弹等此类游戏常见的机制 源代码因为用过的和没用过的素材混在一起了,整理之后再发布

huchong0的博客 2723

Unity3D游戏开发--基础游戏 SpaceShooter学习笔记(飞机脚本)

本博客只是用来记笔记(・∀・) 具体的制作流程请上天入地寻找,网上有很多教程。这里主要是总结一下思路以及记录一下遇到的问题和解决方法,如果能对你有所帮助那就太好啦( ̄▽ ̄)~■□~( ̄▽ ̄) 思路: 简单版主要是由四个部分组成,玩家控制的飞机,随机产生的陨石,一个背景和用于提示信息的文本标签。 飞机:随键盘输入运动,但是不能超过背景图以及视野,按左键发射子弹,击中陨石加分,撞到陨石要销毁并且游戏结...

i22333的博客 1074

Space-Shooter-Unity-tutorial.zip

Unity Space Shooter官方教程资源文件

SpaceShooter资源包

Unity官方案例精讲SpaceShooter资源包,加入了一些模型资源

Unity游戏项目源码 太空射击 完整版.zip

源码参考 欢迎下载

unity官方教程 space shooter 资源

unity官方教程 space shooter 资源, 开启unity,进行导入即可,包括音频, 预制,最终代码,模型,纹理 等资源

Unity3d官方打飞机demo污化版

看完了unity3d官方SpaceShooter的demo功能单一,敌人太少不能换子弹。这样就不够酷,我就用已学的知识加强了一下下先给你们一张图gif看看效果。要是你们能看MP4就好了。这是我今后会长期升级的https://coding.net/u/YeranDean/p/U3D-LearnDiary/git仓库 准备新增的东西 1.子弹类型 2.子弹发射方式 3.boss 及其行为

qq_28844947的博客 5891

Unity3D游戏开发--基础游戏 SpaceShooter学习笔记(遇到的问题与解决方法)

问题1 Non-convex MeshCollider 飞机的碰撞器使用的是网格碰撞器Mesh Collider 但是默认的mesh太过于精细会消耗比较多的资源,所以我使用了素材中一个简化版的mesh。于是报出了这个错误“Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported in Unity 5.” ...

i22333的博客 695

unity官方案例SpaceShooter感悟

(1)游戏场景的制作1.飞船的边界的变量设置,新建的类不需要继承MonoBehavior类中的各个变量将不会显示在属性面板中,所以如果我们想在面板中为其赋值的话,必须在类前面添加属性[System.Serializable]边界变量的值可通过运行游戏到相应边界得到;2.刚体的移动要放置在FixedUpdate();新加入的飞船模型是没有刚体组件的,需要手动添加,如果没有添加却在控制移动的脚本中获得...

mozhi 550

Unity3D学习笔记《Space Shooter》一

样例学习视频Space Shooter。一个2D射击游戏。我用Unity3D的版本是 5.13。 游戏蛮牛提供的资源包下载已经失效了。不过可以通过官方商店下载。 打开UnityEditor。选择Window->Asset Store-> 然后搜索Space Shooter 然后点击下载即可。 下载完成后,一切按照视频教程所做。所遇到的问题如下: 在设置Ambient Light

自己选择的路,跪着也要走完。 1589
下一篇: [Unity3D]Unity3D自动寻路Demo
陶程
博客等级 码龄12年 361粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值