Unity2D学习笔记二(Bilibili视频参考)——秋梦汐

目录

实现物体收集与角色死亡效果

一、实现物体收集

(一)、设计物体

(二)、添加组件与利用Tags收集物品

(三)、设计代码

二、实现角色死亡效果——简单陷阱

(一)、设计陷阱

(二)、设计死亡状态(无论简单或难都使用相同的动画)

(三)、设计代码

(四)、添加组件


实现物体收集与角色死亡效果

一、实现物体收集

(一)、设计物体

新建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(我改了之后好了)

(由于代码有一点改动,这个框选不用打勾)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值