11288人加入学习
(73人评价)
Unity最全最完整的零基础入门教程-Luna's Fantasy(露娜的大冒险)

制作完成于2023年8月1日,基于Unity2023.1.1

价格 免费

动画组件 -> Animator

动画控制器 ->Animator Controller

新建动画控制器 -> project -> 新建Animators 文件夹 -> 新增Animator Controller

绑定动画控制器 -> 选定对象 -> 选择添加的动画组件(Animator) -> 将Animator Controller 拖拽到Animator 下的Controller上

动画制作窗口 Animation: Window -> Animation -> Animation

动画状态机窗口 Animation: Window -> Animation -> Animation

[展开全文]

可以在2D游戏物体中的SpriteRender和地形TilemapRender组件中的Order in layer属性中设置层级的大小。值越大,越后渲染,值越小,越先渲染。值大的游戏物体会覆盖值小的游戏物体。

[展开全文]

控制currentHealth这个值可以访问到被Potion但是不能被修改 -> 使用属性来封装一下

[展开全文]

if 语句和else语句

布尔类型

bool

private bool isLuna = true;

表是非

 

关系运算符 > < =

jinxingqiantaoxunhuan

[展开全文]

销毁游戏物体方法 : Destory(Obj obj)  

gameObject 当前对象

[展开全文]

触发器: 前置 双方都有Box Collider 2D组件 被出发的对象中的Box Collider 2D组件勾上isTrigger; 

触发器方法: OnTriggerEnter2D(Collider2D collider2D)

Collider2D : 触发对象

相关方法 : 

OnTriggerEnter2D(Collider2D collider2D) 触发

OnTriggerStay2D(Collider2D collider2D) 持续

OnTriggerExit2D(Collider2D collider2D)  退出

[展开全文]

边界值数学方法 : Mathf.Clamp(now,min,max)

[展开全文]

被触发挂在脚本游戏物体销毁

 

Destroy(gameObject)

 

反向操作,销毁触发游戏物体

 

Destroy(collision.gameObject);

 

报空问题的原因:

不论哪个游戏对象碰到被触发器都会进行触发检测,但是获取组件的语句是特定的:

LunaController lunaController = collision.GetComponent<LunaController>( );

该游戏对象身上没用这个组件时,所以会报错,所以要写一步判空的语句

[展开全文]

如何从触发器游戏物体脚本访问到被触发物体身上挂在的脚本

原因:HP是luna的属性,在LunaController脚本上定义,但是血瓶会帮助luna恢复这个值,从而在吃到血瓶时形成了两个脚本的联动

 

方法:

被触发的物体在触发器物体中定义为collision

通过collision访问就可以,赋值给新变量,该变量类型就是触发物体的标签名即可

LunaController lunaController = collsion.GetComponent<LunaController>( );

 

GetComponet只能获取自己身上的组件

由触发器访问到的collision

 

[展开全文]

触发检测

双方碰撞器 + 运动方刚体

 

事件/机关 -> 另外一个事件/功能

三个触发器方法

private void

OnTriggerEnter2D(Collider2D collision)

OnTriggerStay2D(Collider2D collision)

OnTriggerExit2D(Collider2D collision)

黄色为unity内置方法

[展开全文]

关于赋值的顺序 -> 后知后觉

全局类里 -> 最先调用,会被覆盖掉

面板里 -> second

start方法里 -> 最后一个调用

 

定一原则

 

[展开全文]

函数的重载

 

private void ChangeHealth(int amount ){

currentHealth += 5;

}

 

private int ChangeHealth(float amount ){

return currentHealth;

}

 

含义:相同的方法,但是函数签名相同,不过函数的返回值/传参leixing不同,

[展开全文]

public 公共类 -> 公共脚本访问

private 私有类 -> 本脚本访问

 

int 整型 -> 存放整数(可正可负)

float 浮点型 -> 小数f

 

如果想要定义一个方法①访问级别②函数类型③函数名(动词)

[展开全文]

添加碰撞组件 Add Component -> Box Collider 2D 

重力 Rigidboby 2D -> Gravity Scale 

受力旋转限制 : Rigidboby 2D -> Constraints

[展开全文]

添加物理组件 Add Component -> Rigidboby 2D 

[展开全文]

unity官网来下载中文网站

[展开全文]

    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");
    Vector2 position = transform.position;
    position.x = position.x + 0.01f * horizontal;
    position.y = position.y + 0.01f * vertical;
    transform.position = position;
人物移动源代码

[展开全文]

start 函数开始时调用,且只调用一次。

update 函数在一秒内多次(60次左右)调用同一个方法,以实现某些功能(如奔跑)。

Vector2存储两个数据(位置x,y)

 

 

[展开全文]