Unity 官方教程2
fps模板小游戏 3D官方文档
Creator Kit: FPS - Unity Learn
对象分组和相对世界坐标
建立空的游戏对象对对象进行分组
相对坐标 : 子对象相对于父对象中心点的坐标
世界原点: 相对于世界中心的坐标
子对象使用世界坐标,将父对象的坐标设置为(0,0,0)
创建对象
创建场景: 在顶部菜单栏中,选择 FPSKIT > Create new Scene。
注意: FPSKIT 菜单并非是 unity 中的默认菜单,而是通过代码,新增如 Unity 编辑器的自定义功能。 Assets/Creator Kit - FPS/Scripts/Editor unity 支持定制功能,非常灵活,开发者可以根据自己的需求,打造属于自己的 unity ,从而简化开发过程
添加游戏目标:
选中 Assets/Creator Kit - FPS/Prefabs/Targets/GermSlimeTarget 预制件,拖入 Hierarchy 中,并在 scene 中,调整其位置
更改目标对象属性: Inspector 窗口 --> Target 组件 --> 更改目标的 Health(小怪的生命) 和 Point Value (杀死后得分)
添加其他目标对象: Assets/Creator Kit - FPS/Art/Models/Characters,选中 GermSpike ,拖入 scene
为新对象添加刚体组件: 单击 Add Component 按钮,然后开始在搜索栏中键入“Rigidbody”并添加;禁用 Use Gravity 复选框,启用 Is Kinematic 复选框。 禁用 Use Gravity 将使病菌漂浮,而启用 Is Kinematic 会阻止子弹(或其他任何对象)使病菌四处移动。
注意:启用 Is Kinematic,则刚体对象将不会被物理引擎驱动,只能通过变换 (Transform) 对其进行操作。
为新对象添加碰撞体: Add Component 并搜索 Sphere Collider。添加该组件。
Sphere Collider(球形碰撞体)将确保可以击中病菌,有时会将这个碰撞体称为“命中范围”。在 Scene 视图中,你会发现这个碰撞体就是包围病菌的绿色球体。
调整碰撞体的大小,使其紧紧地包围住整个对象素材。
将新对象设置为目标: 单击 Add Component,然后搜索并添加 Target 组件。
组件会添加一个自定义脚本来使病菌成为目标。添加脚本后,请更改目标的 Health 和 Point Value 值,然后再次测试游戏。完成后,请务必保存更改。
设计关卡
关闭音频辅助图标: 在 Hierarchy 窗口中,选择 LevelLayout 游戏对象。 在 Scene 视图的右上角,单击 Gizmos 按钮旁的向下箭头。 在菜单中,向下滚动列表并禁用 Built-in Components 部分中的以下两个复选框:AudioReverbZone、AudioSource
添加新房间和走廊: 在 Hierarchy 中,确认 LevelLayout 游戏对象仍然为选中状态; 在 Inspector 窗口中,找到 Level Layout 组件。单击 Editing Layout。这样会默认启用添加模式。然后,单击 CorridorGroup 以添加走廊,或者单击 RoomGroup 以添加房间。 你可以按键盘上的 R 键来旋转房间并更改这个房间尝试贴靠到的门。对位置感到满意后,请单击鼠标按钮来放置房间。
如果操作失误或者要删除房间,请单击组件中的 Remove 按钮。完成此操作后,将光标移到 Scene 视图中的房间和走廊上方就会突出显示这些房间和走廊。单击一个房间即可将这个房间删除。
完成关卡设计的编辑工作后,再次单击 Inspector 窗口中的 Editing Layout 按钮以禁用关卡编辑器工具。
添加门: 选择 Assets/Creator Kit - FPS/Prefabs/Door and Key/FatBlob,拖拽到 scene 中,选择合适的位置,堵住路口,充当门
添加钥匙并匹配门: 在 Project 窗口中,选择 Key 预制件,拖拽到 scene 中,选择合适的位置,在 Inspector 中,找到 Key 组件。在 Key Type 字段中,为钥匙提供一个唯一的名称。
在 Hierarchy 中,选择 FatBlob 游戏对象。在 Inspector 中,找到相应的 Lock 组件。使用下拉菜单将 Key Type 值设置为所选的钥匙名称。现在,玩家只要收集到钥匙,就可以开启对应的门
修改武器
根据原武器新建自己的新武器: 选择 Assets/Creator Kit - FPS/Prefabs/Weapon/GermOBlaster 预制件,按 Ctrl + D (Windows) 或 Cmd + D (macOS) 来复制一个副本,并将武器重命名。
在新武器的预制件中,更改武器属性: 双击新武器,进入预制件编辑状态,在 Inspector 中,找到 Weapon 组件。 将 Trigger Type 更改为 Manual。现在,仅在按下扳机时,武器才会发射一次,而不是尽可能快地发射。 Clip Size 的值从 30 更改为 8,以减少单次重新装填弹匣的弹药量。将 Damage 的值从 0.5 更改为 5。 保存。
将新武器添加给 Character: 在 Hierarchy 中,选择 Character 游戏对象
在 Inspector 窗口中,找到 Controller 组件。
选择 Starting Weapons 条目名称左侧的小箭头以展开该条目。将 Size 从 3 更改为 4。这将在关卡开始时为玩家提供四种武器。
将新武器预制件从 Project 窗口拖到 Inspector 中显示的 Element 3 字段上。
保存后,运行游戏测试,用鼠标滚轮或 1、2 、3、4 键来切换武器。
关卡终点
创建 LevelEnd 游戏对象: 在 Hierarchy 窗口中右键单击一个空的区域,然后选择 Create Empty,在 Inspector 窗口中,将游戏对象重命名为“LevelEnd”。
添加盒装碰撞体: 在 Inspector 中,单击 Add Component 按钮。搜索“Box Collider”,然后将此组件添加到 LevelEnd。启用 Is Trigger 复选框。
单击 Add Component 按钮。搜索“End Checkpoint”,然后将此组件添加到 LevelEnd。
将碰撞体放在合适位置: 使用变换组件工具将该对象放置在所需的关卡结束位置。房间或走廊的尽头就很适合作为关卡终点。
构建游戏发布
确保要用于游戏的场景已打开。在顶部菜单中,选择 File > Build Settings。
在对话窗口中,选择空的 Scenes In Build 列表底部的 Add Open Scenes 按钮。此时会将当前打开的场景添加到构建中。
单击 Build 按钮。选择要保存构建版本的文件夹并为其命名。Unity 将创建构建版本,然后打开包含可执行文件的文件夹。通过启动此文件即可玩这个游戏。
拓展手册
?
?
探索创作者套件的所有可能性:
参考详细手册以了解更多信息以及编辑器的背景资料。 这些参考内容包括:
此创作者套件中所有武器设置的相关概述。
有关导入你自己的 3D 模型并使用它来创建新型武器的指导。
有关高级游戏功能(例如,创建在销毁目标时触发的门锁系统)的指导。
3.创作者套件:初学者代码 荒野西部
官方文档:Creator Kit: Beginner Code - Unity Learn
资源:Creator Kit: Beginner Code | Tutorials | Unity Asset Store
游戏类型: 3D ARPG (动作角色扮演游戏) 包含:
角色系统
怪物系统
物品系统
AI 系统
使用vs2019作为开发者工具
edit - preference - External Tools -> visual studio XXXX 2019.
打开项目
Hierarchy -> LevelDesign -> PotionSpawner -> Inspector -> Spawner Sample -> SpawnerSample -> Project -> 双击在 vs 中打开
或者,直接在 Project -> Assets/Creator Kit - Beginner Code/Scripts/Tutorial/ 下,双击在 vs 中打开
官方类库
注意: 一定要使用英文官方网站的 api 文档:Unity - Scripting API: MonoBehaviour
变量
函数
Unity 官方教程 - 函数简介
C# 官方教程 - 方法
调试
输出错误日志
debug.log
用 Console 查看错误提示和警告
用 vs 2019 进行 debug
可视化脚本 #
visual script
Visual Script 官方文档
unity 可视化开发官方专题
unity 可视化编程官方教程
流程控制
C# 官方文档 - 选择语句C# 官方文档 - 迭代语句C# 教程 - 通过分支和循环语句了解条件逻辑(强烈建议学习)
组件类
using UnityEngine;
using CreatorKitCode;
public class SpawnerSample : MonoBehaviour
{
public GameObject ObjectToSpawn;
public int distance =2;
void Start()
{
SpawnObject(15);
SpawnObject(55);
SpawnObject(95);
}
void SpawnObject(int angle)
{
Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right;
Vector3 spawnPosition = transform.position + direction * distance;
Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity);
}
}
页:
[1]