Unity2D Notes

快捷键

Q W E R T : to select tools , which help you better adjust your items

音效

Get and use audio from the Internet

asset store -> audio-> free -> DOWNLOAD sound fx - retro pack && Casual Game BGM
-> install your audio packages -> player->(component)audio source -> uncheck Play on awake -> add your audio to AudioClip ->check Loop

add death audio to each enemy

uncheck (play on awake)
open class enemy->get component of gameObject audio
audio.play();

add jump/hurt or other audios to your player

New a variable, which type is AudioSource, get componet , and then add audio.play() to the function you want .

SoundManager: simplify your component

create a script -> create a emptyObject -> drag your script to it -> add a audio source -> edit your script :

public AudioSource audioSource
//then drag AudioSource component to your script's vavariable on inspector
public AudioClip Jump,hurt,cherry 
//then drag mp3 file to these AudioClip 
public void JumpAudio(){
audioSource.Clip = Jump;
audioSource.play();
}

处理 TileSet

1.  tileset->inspector:
	SpritMode = Multiple
2.  tileset->inspector->sprite Editor:
	Slice->PixelSize:
		X=Y = 16
3.Create 2D Object.TileMap.Rectangular	
4.Create new TilePalette
5.Drag your tileSet into the created TilePalette
6. Uncheck choice---Flood Fill Contiguous Only
7.Choose Paint-brush
8. choose the object you want
9.Paint it to the Scene. 

One Way Platform: player can jump to the platform from below

Create a 2D.tilemap ->change sorting layer to ground -> draw a platform -> add a tilemap collider,check USED BY EFFECTOR -> add component : Platform Effector 2D:check Use One Way && USE COLLIDER MASK

Add collide /增添碰撞

Add TileMap collide to your tileMap

UI层:

快捷键: ctrl +f 编辑界面

Dialog that shows you words

show Dialog when collision happened

Canvas -> ui -> panel -> set transparency -> set anchor and translation
right click panel -> text -> adjust position -> download free pixel font on the asset store.
->
add a collider on the gameobject that you want,
->
using collision to write your code:
class : onCollisionEnter2D , gameobject.SetActive
->

set gradient effect to your EnterDialog:

Create a new animation called EnterDialog ,add it to specific gameobject,
and back to your animation interface ,click red button to record -> change color -> add new frame , -> set color -> stop recording -> save -> END

图层:

Inspector->Sorting Layer & Order in layer
Sorting layer : the item position higher ,the level is lower
Order in layer : higher number means higher level in the same layer

角色:

UI

LifeBar

Canvas ->create empty in Canvas called Health bar -> create Image called border under Health bar -> drag bar.png into it -> border.Inspector : set native site, anchor : click lower right corner image without press Alt -> create image called Fill -> Fill.anchor : alt + click lower right corner (to let image scale to border)
-> health bar.Inspector : add component called slider uncheck everything. set none to every property, drag image-Fill to property : fill rect , -> add a image called heart ->

Edit your code to adjust the value of your lifeValue :

 class HealthBar : Mono...{
 public Slider slider ; // get health bar's slider
	public void SetMaxHealth(float Max){}
	public void GetDamage(float Damage){
	slider.Value -=Damage;
	} 
}

now you can declare class HealthBar at any Script and use it .

设置角色:

设置重力&碰撞:

Set Gravity :

Inspector -> Add Component -> Rigid Body 2D -> grivity scale

Set Collide :

add componet ->add shape collide to your player -> edit collider (to adjust collider’s boundary)

Script

jump twice

use a int variable to count jump-times

获取组件信息

xx = GetComponent<T>();

Move/角色移动:

Input.GetAxis("");
Input.GetAxisRaw("");

Crouch/crawl

Movement:Crouch
code:
Crouch()->

deal with the situation that player can’t stand if there is collider on its head:
!Physics2D.OverlapCircle(Point,radius,ground);

拾取物品:

添加Sprite, 为Sprite 设置动画,画面

1.添加Collider 2D , 选择 Is trigger
2.为物件设置tag = Collections
3.为角色增添代码:

public void OnTriggerEnter2D(Collider2D collision){
	if(collision.tag == "Collections")
	{
	Destroy(collision.gameObject);
	}	
}

碰撞敌人,击杀

使用OnCollisionEnter2D()
代码中获取碰撞体信息

collision.gameObject.transform.position

使用位置信息来处理玩家角色行为

碰撞后播放动画再死亡

添加Animation Event即可

角色细节优化:

增加运动流畅度

选择圆形碰撞体,防止磕石头

镜头

使用更智能的镜头替代默认镜头:CinemaMachine

Window->package manager -> cinemaMachine

设置镜头边界:

背景:增添 Collide 2D , 勾选 Is Trigger
镜头: 增添 Camera Confiner ->Set Bounding Shape 2D to
background

Add Lighting effect to your Scene

make things dark

make the tilemap and other objects black
tilemap -> tilemap renderer -> material -> diffuse
Make Object or Player dark :
create a material -> set shader from standard to ui.diffuse -> drag this material to your gameObject.

NOTE: if you use this method to add diffuse to your gameObject, it will disappear sometimes.

add lighting

light -> Point Light
light -> Directional Light
you can change the number of y to adjust its brightness.

Parallax

Pack your background
Create a new Script

Variable : camera , StartPointX,StartPointY,MoveRate

translation.position = new Vector2(StartPointX + camera.position.x*MoveRate,camera.position.y);

drag your scipt to your gameObject
adjust MoveRate , generally, the closer the background is,the lower of the moverate will be.

MainMenu

to realize play and quit

Create a new Scene called Menu -> new a canvas -> new a panel called BG in Canvas -> change source image of panel 1 -> new panel called MainMenu , change its color -> right click MainMenu -> ui.Button >> - TextMeshPro - > change text to play , quit

New a Script

SceneManager.LoadScene(SceneManager.GetActiveS>>cene().buildIndex+1);
Application.Quit(); 

Drag it to MainMenu
add your script to your button’s Onclick component ,

Realize gredient color and then text appears

Pack your text
add animation to your MainCamera panel
unclick loop
add event, which is letting text appear , to the end of your animation

Realize pause:

add a ui.button(you can add panel and set its color to make the scene more beautiful) ->
In your code:

Time.timescale = 0f; // pause game ;
Time.timescale = 1f; // continue game ;

Use slide bar to change your game’s audio

create a new slider on proper position -> create a Audio Mixer in file Assets -> Windows.Audio.Audio Mixer ->
choose any component called audio source -> output -> choose an Audio Mixer -> back to slider ,change max and min value to the same value of Audio Mixer

make audioMixer’s volume modifiable

AudioMixer -> Right click Inspector.Attenuation.Volume ,then choose Expose -> click Exposed parameters -> change its name if necessary

Code in your script :

using UnityEngine.Audio

public AudioMixer audioMixer
// then drag created audioMixer to AudioMixer's value on inspector 

public void SetVolume(float value){
audioMixer.SetFloat("VOLUMENAME",value);
}

choose slider -> add this function to OnValueChange(single) -> choose function in Dynamic float

跨关卡操作:

保留每个关卡/场景的数据:

Assets下创建文件夹prefebs,将需要保存数据的物件拖拽到文件夹内.	

EveryTime you add a component , remember to store the data in prefebs.

切换关卡

use SceneManager to change

add a empty object -> adjust its position on the botton of your background, stretch an object to the length of background -> add a collider
->

using UnityEngine.SceneManagement 

-> In function OnTriggerEnter2D() : (UNNECESSARY)

Scene.Manager.LoadScene(SceneManager.GetActiveScene().name);

Set Delay

use function : 
invoke("FUNCTION_NAME",(float)Time)

Close all audios when dead

GetComponent<AudioSource>().enabled = false;

Add Scenes
File -> Bulid Settings -> drag scenes to Scenes in build
-> In your Script :

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex+1);

疑问及其解答

为什么为物件添加了刚体之后,角色碰撞后消失的代码就无效了?

OnTriggerEnter2D不行,因为加了刚体角色就进不去物体内,无法触发Trigger.
改用OnCollisionEnter2D

如何在代码里实现 Animation Event?

不要用官方给的代码尝试在Script里实现Animation Event先,没有用。用设计器来实现即可

IsTrigger对Collider的影响

设置成IsTrigger后角色可以走进Collider的里边,它使用的函数是OnIsTriggeer等等

Small Tips

press ctrl+D to duplicate a scene

eliminate gap of tilemap

way1 :set grid’s x and y to 0.99
way2 :editor -> Project Settings… -> Quality -> Anti Aliasing -> Disable

Temp Notes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值