学习资源:B站 M_Studio《Unity教程2D入门》13
Unity Assets:Sunnyland
Day8
预期效果:若玩家踩到敌人的头上,则可以将敌人消灭
准备工作
1.将素材导入
2.将素材尺寸调整好——Pixels Per Unit设为16
3.创建2Dsprite
4.给该sprite添加图片,一般默认是最常用的一张图——Sprite属性
如果不显示,则需要调整sorting layer
5.添加Rigidbody2D 和 collider
如果是tile碰撞体(记得锁定RigidBody的z轴)
6.添加animator
消灭敌人
注意:这里因为不是用isTrigger来设置敌人的碰撞体,所以和Cherry的设置有点不同。
- OnTriggerEnter2D->OnCollisionEnter2D
- 代码里不能直接写collision.tag == “Enemy”。
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.tag == "Enemy")
{
Destroy(collision.gameObject);
}
}
该函数为内置的函数,意为:当碰到2D碰撞体时执行
但现在这个代码只是实现了当Player碰到敌人时,敌人消失。
为了实现“踩到敌人将敌人消灭”我的判断条件是当Player的动画状态是falling时…判断条件不唯一,根据需要来
如果不是falling的状态则做出另外的反应(代码省略)
private void OnCollisionEnter2D(Collision2D collision)
{
//只有在下落的时候
if(anim.GetBool("isFalling"))
{
//踩到敌人
if (collision.gameObject.tag == "Enemy")
{
//敌人才会消失
Destroy(collision.gameObject);
//踩完后垫着敌人小跳一下
rb.velocity = new Vector3(rb.velocity.x, jumpforce * Time.deltaTime);
anim.SetBool("isJumping", true);
}
}
else
{
//触发别的效果
}
}
版权声明:本文为weixin_45859596原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。