音效Audio
-
Add Component -> Audio Source
-
Audio Source部件中添加AudioClip,设置好各选项
- 背景音乐可以选择“Play On Awake”和“Loop”
- 触发类的音乐就不勾选
-
为Enemy死亡时添加一个音效后,打开Enemy.cs,添加代码:
protected AudioSource deathAudio; public void JumpOn() { deathAudio.Play();//播放deathAudio anim.SetTrigger("death"); }
-
为角色添加一个起跳音效,打开PlayerConroller.cs,添加代码:
[SerializeField]private AudioSource jumpAudio; void Movement() { ………… //角色跳跃 if (Input.GetButtonDown("Jump") && coll.IsTouchingLayers(ground)) { rb.velocity = new Vector2(rb.velocity.x, jumpForce * Time.deltaTime); jumpAudio.Play();//播放音效 anim.SetBool("jumping", true); } }
并在Player的Script组件中选择jumpAudio
-
还可以添加受伤音效等等
对话框Dialog
-
Hierarchy窗口中的Canvas对象中Create -> UI -> Panel
-
在Inspector窗口中的Rectangle Transform组件中设置Anchor Preset等参数
-
在Panel对象中Create -> UI -> Text,并设置好Text组件中的各个参数
-
在house中添加Box Collider 2D,并调整到door的位置,并且选上Is Trigger
-
为Player添加一个tag,命名为“Player”
-
为house添加一个Script,并添加代码:
public GameObject enterDialog; private void OnTriggerEnter2D(Collider2D collision)//碰撞门显示 { if (collision.tag == "Player") { enterDialog.SetActive(true); } } private void OnTriggerExit2D(Collider2D collision)//离开门关闭 { if (collision.tag == "Player") { enterDialog.SetActive(false); } }
并在house中选择需要的EnterDialog
-
为EnterDialog添加一个Enter的动画,在Animation窗口中选择“Preview”
-
在第一帧调整对话框和文字不透明度为0,在第n帧调整不透明度(自行调整),然后关闭Preview,即可形成动画
趴下效果
-
正常添加crouching的动画效果run- > crouch、crouch -> fall、idle <-> crouch,并在Animation窗口中设置好各个参数设置,在PlayerControlelr.cs中添加代码:
void Crouch()//在Movement方法中调用该方法 { if (Input.GetButton("Crouch")) { anim.SetBool("crouching",true); Discoll.enabled = false;//取消使用Box Collider 2D碰撞体 } else if (Input.GetButtonUp("Crouch")) { anim.SetBool("crouching",false); Discoll.enabled = true; } }
-
在PlayerControlelr.cs中添加代码:
[SerializeField]private Collider2D Discoll;
在inspector窗口中将Player的Box Collide 2D选进Discoll中
-
为Player添加Empty,命名为ceiling,调整ceiling位置为蹲下后最高点,在PlayerControlelr.cs中添加代码:
[SerializeField] private Transform ceilingCheck;
将Player中的ceiling拖进inspector窗口中的ceilingCheck
-
修改Crouch()方法:
void Crouch() { //OverlapCircle判断附近是否有图层,参数:点的位置,范围,判断的图层 if (!Physics2D.OverlapCircle(ceilingCheck.position,0.2f,ground)) { if (Input.GetButtonDown("Crouch")) { anim.SetBool("crouching",true); Discoll.enabled = false; } else if (Input.GetButtonUp("Crouch")) { anim.SetBool("crouching",false); Discoll.enabled = true; } } }