//判断当前点和目标点的距离
if(Vector2.Distance(transform.position,roadsTrans[index+1].position)<0.05f)
//定义最后一个索引
//if(index == finalIndex){
if(Vector2.Distance(transform.position,roadsTrans[finalIndex].position)<0.1f){return;}
}
//判断在后,移动在前
//判断当前点和目标点的距离
if(Vector2.Distance(transform.position,roadsTrans[index+1].position)<0.05f)
//定义最后一个索引
//if(index == finalIndex){
if(Vector2.Distance(transform.position,roadsTrans[finalIndex].position)<0.1f){return;}
}
//判断在后,移动在前
//1.修改stone脚本的CreateTears方法
private void CreateTears(){
tearNum++;
GameObject go = Instantiate(tearsGo,roadsTrans[0].position,Quaternion.identity);
Tear tear = go.GetComponent<Tear>();
tear.pointsTrans = pointTrans;
}
//2.把眼泪的层级改成2
//3.新建脚本Tear
public class Tear:MonoBehaviour
{
public Transform[] pointsTrans;
void Update()
{
Vector2.MoveTowards(transform.position,)
}
}
Tear脚本
public Transform[] roadsTrans;
void Update(){
Vector2.MoveTowards(transform.posistion,roadsTrans[roadsTrans.Length-1].posistion,0.02f);
}
获取Points下的子路点:
两种方法
方法1:
tearsGo = Rescources.Load<GameObject>("Prefabs/Tear");
transform.Find("Points").GetChild(0);
transform.Find("Points").GetChild(0-n);
方法2:定义一个数组,存放子路点
private Transform[] pointsTrans;
void Start(){
tearsGo = Rescources.Load<GameObject>("Prefabs/Tear");//加载资源预制体
Transform pointTrans = trans.Find("Points");
//寻找父路点
pointsTrans = new Transform[pointTrans.childCount];//初始化路点数组,数组大小是父节点的数目
for(int i=0;i<pointsTrans.Length;i++)
{
//把子路点加进去
pointsTrans[i] = pointsTrans.getChild(i);
}
foreach(var item in pointsTrans)
{
Debug.Log(item);
}
}
Invoke(Invoke和InvokeRepeating有啥区别)
和携程移动眼泪
private int tearNum;
start(){
...
Invoke("StartcreatingTears",6);
}
// 定义一个方法
private void CreateTear(){
tearNum++;
Instantiate(tearsGo,roadsTrans[0]);
}
//每次生成一滴眼泪
private void StartcreatingTears(){
//从第0s开始,每隔2s开始调用一次方法
InvokeRepeating("CreateTear",0,2)
}
//眼泪数量限制,到达数量了停掉
void Update(){
if(tearNum>=5){
CancelInvoke();
tearNum = 0;
}
}
prefabs预制体文件夹的创建
拖动tear文件到prefabs中变成预制体
stone脚本挂在石像上
使用resource.Load<>加载预制体
a.先定义一个初始变量
private GameObject tearsGo;
b.加载资源
tearsGo = Resources.Load<GameObject>("Prefabs/Tear");
创建几个空游戏对象,作为tears的lu'dian
组件Trail Renderer 拖尾效果
材质的设置Materials选择一个材质
持续时间0.6
拖尾效果的修改,贝塞尔qu'xian(0.02-->0)
主要是讲了一下脚本的挂载
先定义一个路点sp1作为目标位置
1.寻找到目标物体sp1的位置,获取目标位置的位置
private Transform Trans;
Start(){
Trans = GameObject.Find("sp1").transform;
}
2.使用moveTowards方法当前移动物体
transform.position = Vector2.MoveToward(transform.posistion,Trans.posistion,移动速度);
当前位置,目标位置,移动速度
1.先创建animator和animation
2.在animator文件夹中创建animator controll,然后再需要播放动画的物体上挂载animator ,把刚刚创建的动画对象拖进controll
3.选中动画资源,然后ctrl全选,拖动到需要播放对象的物体身上。
4.把生成的anim动画文件放入animation文件下下
5.在动画面板观察动画顺序
6.设置显示的层级
7.在环境空物体中添加audio scorce背景音乐