unity愤怒的小鸟学习制作(二)

您所在的位置:网站首页 愤怒的小鸟2领班猪图片 unity愤怒的小鸟学习制作(二)

unity愤怒的小鸟学习制作(二)

2023-06-27 13:22| 来源: 网络整理| 查看: 265

终于又开始了啦啦啦,我有一个自己的相机了,真开心,诶嘿

视频链接和素材如下:视频

小鸟的飞出

想要让小鸟在拉开弹弓之后能飞出去,就必须让这个组件失活,如下

在这里插入图片描述

所以我们更改脚本内容,加入:

private SpringJoint2D sp; private void Awake() { sp = GetComponent(); } private void OnMouseUp()//当鼠标抬起就会调用该函数 { isClick = false; sp.enabled = false; }

然后就可以看到小鸟飞出去的速度很大,需要修改。

可以通过小鸟是否加入动力学进行修改,这样速度就不会太大(讲真,没怎么听懂) 在这里插入图片描述

也就是,先修改成: 在这里插入图片描述

然后再将脚本修改成:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bird : MonoBehaviour { //要实现当鼠标一直按下时,小鸟的位置跟随鼠标的位置 private bool isClick = false; public Transform rightPos; public float maxDis = 3;//最大距离是3米 private SpringJoint2D sp; private Rigidbody2D rg; private void Awake() { sp = GetComponent(); rg = GetComponent(); } private void OnMouseDown()//当鼠标按下就会调用该函数 { isClick = true; rg.isKinematic = true;//开启动力学 } private void OnMouseUp()//当鼠标抬起就会调用该函数 { isClick = false; rg.isKinematic = false; Invoke("Fly", 0.1f); } private void Update()//刷新 { if (isClick)//鼠标一直按下,进行位置的跟随 { transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition); //需要把小鸟的Z轴减去主摄像机的Z轴 transform.position -= new Vector3(0, 0, Camera.main.transform.position.z); //保证z轴数值为0 //transform.position += new Vector3(0,0,10); if (Vector3.Distance(transform.position, rightPos.position) > maxDis)//大于最大长度 { Vector3 pos = (transform.position - rightPos.position).normalized;//单位化向量 pos *= maxDis;//最大长度的向量 transform.position = pos + rightPos.position; } } } //专门为了小鸟飞出写的函数 void Fly() { sp.enabled = false; } }

这样基本就可以了,但是如果需要微调的话,可以调节以下参数:

在这里插入图片描述 这里的Damping Radio就是阻尼系数,范围是0-1,系数越大,弹簧的弹力效果越不明显

小鸟和猪、木头的碰撞(死或者受伤)

因为小鸟飞出之后需要有一个平面来接住他,所以要新建一个空物体

也就是在Hierachy空白处右键点击,选择创建空物体 在这里插入图片描述 然后再将空物体归零

在这里插入图片描述 因为空物体要存放所有需要的环境之类的,所以重命名为env

接下来找到需要的主题,比如这个第一个主题,点击之后,在Spite Mode 这里,将Single改成Mutiple,然后点击下方的Apply 在这里插入图片描述

完成Apply之后点击Sprite Editor进行裁剪 在这里插入图片描述 虽然视频里面点击一下Trim就切割完成了,但是我没成功,就只好手动切割了,切割完成就点击Apply

在这里插入图片描述 然后将颜色较深的这个切割好的图片拖到上面

在这里插入图片描述 然后给图片添加一个碰撞盒 在这里插入图片描述

在这里插入图片描述 然后编辑碰撞盒 在这里插入图片描述

在这里插入图片描述 将盒子向下拉一点,再将这个图片放到env里面

在这里插入图片描述 在这里插入图片描述 然后不断复制粘贴拼接图片,在Scence里面放好小鸟的地面,如下: 在这里插入图片描述 尝试运行,发现小鸟飞的太快了,没有阻力

在这里插入图片描述 修改这个Angular Drag,因为这个值相当于空气阻力的一种,将其放大,测试,发现还可以

在这里插入图片描述 挑选一只猪,将其拖上去,然后摆放好位置

给这只猪加一个碰撞盒和一个Rigidbody2D

在这里插入图片描述

记得修改参数

在这里插入图片描述

现在开始给猪一个脚本,写关于他的碰撞死亡

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pig : MonoBehaviour { // Start is called before the first frame update public float maxSpeed = 10; public float minSpeed = 5; private SpriteRenderer render; public Sprite hurt; private void Awake() { render = GetComponent(); } private void OnCollisionEnter2D(Collision2D collision) { //相对速度 print(collision.relativeVelocity.magnitude); if (collision.relativeVelocity.magnitude > maxSpeed)//直接死亡 { Destroy(render); }else if(collision.relativeVelocity.magnitude > minSpeed&& collision.relativeVelocity.magnitude


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3