网站建设 企炬江阴,厦门搜索引擎优化合作,外贸soho东莞建站,网站建设与管理基础及实训电子版终于又开始了啦啦啦#xff0c;我有一个自己的相机了#xff0c;真开心#xff0c;诶嘿
视频链接和素材如下#xff1a;视频 小鸟的飞出
想要让小鸟在拉开弹弓之后能飞出去#xff0c;就必须让这个组件失活#xff0c;如下 所以我们更改脚本内容#xff0c;加入#…终于又开始了啦啦啦我有一个自己的相机了真开心诶嘿
视频链接和素材如下视频 小鸟的飞出
想要让小鸟在拉开弹弓之后能飞出去就必须让这个组件失活如下 所以我们更改脚本内容加入 private SpringJoint2D sp;private void Awake(){sp GetComponentSpringJoint2D();}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 GetComponentSpringJoint2D();rg GetComponentRigidbody2D();}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 updatepublic float maxSpeed 10;public float minSpeed 5;private SpriteRenderer render;public Sprite hurt;private void Awake(){render GetComponentSpriteRenderer();}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 maxSpeed){render.sprite hurt;}}
}
然后再将hurt的对象变为小猪受伤的图片104号 运行感觉还不错
今日就到这里吧