unity愤怒的小鸟学习制作(二) |
您所在的位置:网站首页 › 愤怒的小鸟2领班猪图片 › unity愤怒的小鸟学习制作(二) |
终于又开始了啦啦啦,我有一个自己的相机了,真开心,诶嘿 视频链接和素材如下:视频 小鸟的飞出想要让小鸟在拉开弹弓之后能飞出去,就必须让这个组件失活,如下 所以我们更改脚本内容,加入: 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; } }这样基本就可以了,但是如果需要微调的话,可以调节以下参数:
因为小鸟飞出之后需要有一个平面来接住他,所以要新建一个空物体 也就是在Hierachy空白处右键点击,选择创建空物体
接下来找到需要的主题,比如这个第一个主题,点击之后,在Spite Mode 这里,将Single改成Mutiple,然后点击下方的Apply 完成Apply之后点击Sprite Editor进行裁剪
给这只猪加一个碰撞盒和一个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 |