900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > unity怎么制作云飘动_【Unity3D】实现云循环漂浮效果

unity怎么制作云飘动_【Unity3D】实现云循环漂浮效果

时间:2018-12-27 05:42:59

相关推荐

unity怎么制作云飘动_【Unity3D】实现云循环漂浮效果

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

///

///

/// CloudFlow说明

///

/// 1.该脚本挂在Cloud Object上;

/// 2.将背景挂在Inspecter中到“_背景”中;

/// 3.“_从左到右”值,勾选左到右,不勾选右到左;

/// 4.“_速度”改变云漂浮速度

/// 5.“_离开画面距离”,决定云离开画面多远开始从另一边循环

/// 6.“_上下浮动效果”勾选开启浮动效果,默认不开启;

///

///

public class CloudFlow : MonoBehaviour

{

public bool _从左到右 = true;

public float _速度 = 2;

public float _离开画面程度 = 5;

public BoxCollider2D _背景;

public bool _上下浮动效果 = false;

public float _上下浮动幅度 = 5;

public float _上下浮动速度 = 5;

private float x_开始位置, x_结束位置;

private float _正向系数 = 1;

private float y_中心位置;

private static float radian_0_1 = 0;

void Start()

{

PosInitialize();

}

void Update()

{

Flow();

if (_上下浮动效果)

{

VerticalFlow();

}

if (isArriveMargin())

{

ChangePos();

}

}

//上下浮动方法

public void VerticalFlow()

{

radian_0_1 += _上下浮动速度*0.001f;

float dy = Mathf.Cos(radian_0_1) * 0.1f * _上下浮动幅度;

transform.position = new Vector3(transform.position.x, y_中心位置 + dy, transform.position.z);

}

//参数初始化方法

public void PosInitialize()

{

if (_从左到右)

{

_正向系数 = 1;

x_结束位置 = _背景.bounds.max.x + _离开画面程度+2;

x_开始位置 = _背景.bounds.min.x - _离开画面程度-2;

}

else

{

_正向系数 = -1;

x_开始位置 = _背景.bounds.max.x + _离开画面程度+2;

x_结束位置 = _背景.bounds.min.x - _离开画面程度-2;

}

y_中心位置 = transform.position.y;

}

//横向漂动方法

public void Flow()

{

this.transform.position += new Vector3(_正向系数 * _速度 * 0.01f, 0, 0);

}

//判断是否该归位方法

public bool isArriveMargin()

{

return (_从左到右 && transform.position.x > x_结束位置) || (!_从左到右 && transform.position.x < x_结束位置);

}

//循环归位方法

public void ChangePos()

{

transform.position = new Vector3(x_开始位置, transform.position.y, transform.position.z);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。