目录
实现物体收集与角色死亡效果
一、实现物体收集
(一)、设计物体
新建2D框体,选中2DObject--->Sprites--->Square
1.重命名为Cherry
2.选中Cherries_0
3.托移到Cherry属性栏的Sprite Renderer中的Sprite里面
给Cherry物件动态效果
创建Animation如图所示
将Cherry(Animation)托移到Cherry(2DObject)上,显示如图则正确
点击Cherry(Animation)将连续图片托移到Animation控制台(如果拖不进去,请点击一下Cherry(2DObje然后再托移)设置Samples为适合大小)
设置动画为循环,点击Cherry(Animation)在它的属性栏中LoopTime栏打勾
(二)、添加组件与利用Tags收集物品
点击Cherry(2DObject)查看属性栏,选中Tag,然后点击Add Tag,添加Cherry_Tag
(目的是为了实现代码中OnTriggerEnter2D函数,当角色触碰Tag标签为Cherry的物体,物体会消失)
在Cherry(2DObject)属性中添加组件Box Collider2D ,点击Edit Collider 对Cherry物体进行线条框选(原本的框很大,角色还没触碰到就消失,于是使用这个缩小框,达到能够碰到物体才让物体消失的作用)
(三)、设计代码
创建脚本C# Scripts
写入代码
public class Item_Collect : MonoBehaviour
{
private int cherries = 0;
[SerializeField] private Text cherriesText;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Cherry"))
{
Destroy(collision.gameObject);
cherries++;
cherriesText.text = "Cherries:" + cherries;
}
}
}
添加Text控件,显示收集结果
在Player属性栏将刚刚写好的脚本Item_Collect移入。 再将Text控件移入(Item_Collect)Cherries Text属性栏中(Text控件是要编辑,然后字体需要在Google官网中下载,但是我也每怎么正常显示数据,但是能在后台看到数据发生改变就行)
二、实现角色死亡效果——简单陷阱
(一)、设计陷阱
1.像Cherry(2DObject)一样添加Spike新物体
2.寻找Spikes
3.将Spikes_Idle托移到Sprite属性栏中
4.在Tags添加新的Spike标签
(二)、设计死亡状态(无论简单或难都使用相同的动画)
1.创建Animation(Death)
2.将Death托移到Player(虽然没有东西出来,但是其实实际已经在之前Animatior文件夹的Player里面了)
3.双击Death(Animation)出现工作栏,点击左上下拉框,看到Death就算已经托移了
然后选中Death进行编辑
4.进入下图后,选中Disapper里面的图片托移到工作栏中
1.选中红色摄像头标志,出现粉色状态(录下行为,便捷操作)
2.白色线指向帧数为7的地方
3.在点击红色摄像头之前,player属性面板最好已经打开,点击Sprite Renderer 旁边的框
发现帧数为7的地方出现两个小关键帧就关掉红色摄像头标志
(三)、设计代码
和前面脚本一样创建重命名为PlayerLife,粘贴后保存脚本
private Rigidbody2D rb;
private Animator anim;
private void Start()
{
/*创建对象,获取组件功能*/
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Spike"))
{
Die();
}
}
private void Die()
{
rb.bodyType = RigidbodyType2D.Static;
anim.SetTrigger("death");
}
private void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
打开Player 的Animator
1.添加新的Parameters,类型为Trigger,名为death与脚本中的SetTigger相呼应
2.将anystate状态与Death行为连接
3.点击两者连接的线,在右边属性栏的Condition里面选中death
再次点击Death(Animation)进入工作面板,将帧数移到23,选中左边的事件帧,然后再点击在23帧的刚新建的事件帧,右边弹出Inspector框,拉下Function发现里面有脚本PlayerLife,再点击里面有两个函数方法(Die()与Restart())选中Restart()
(四)、添加组件
Box Collider的作用和之前一样,如果该Spike总是慢一步出现,可以将Sprite Renderer中的 order in Layer : default 0 改为 1(我改了之后好了)
(由于代码有一点改动,这个框选不用打勾)