unity2d创建一个随机方向运动对象
2015-12-13 16:24
597 查看
using UnityEngine; using System.Collections; public class swan : MonoBehaviour { public Rigidbody2D prop; public float leftSpawnPosX;//表示左右所能达到的左右边界值 public float rightSpawnPosX; public float minSpawnPosY;//随机生成的天鹅的Y值的边界值 public float maxSpawnPosY; // public float minTimeBetweenSpawns;//随机生成天鹅的时间间隔值的最大最小值 // public float maxTimeBetweenSpawns; public float minSpeed; public float maxSpeed; private Rigidbody2D spawn; private bool facingLeft; // Use this for initialization void Start () { facingLeft = Random.Range (0.0f, 2.0f) > 1;//facingLeft为一个bool变量,表示天鹅是否向左飞行,随机生成一个0-2的数字,若大于一则为真 float posX = facingLeft?rightSpawnPosX:leftSpawnPosX; float posY = Random.Range (minSpawnPosY, maxSpawnPosY); Vector3 swanPos = new Vector3 (posX, posY, transform.position.z); spawn = Instantiate (prop, swanPos, Quaternion.identity) as Rigidbody2D; if (!facingLeft) {//设置spawn的朝向,若其朝右则将scale的x值取为负数 Vector3 scale = spawn.transform.localScale; scale.x *= -1; spawn.transform.localScale = scale; } float Speed = Random.Range (minSpeed, maxSpeed);//设置spawn的速度,若其向左飞行,则将速度取负数 Speed *= facingLeft ? -1 : 1; spawn.velocity = new Vector2 (Speed, 0); } // Update is called once per frame void Update () { if (spawn == null)//若spawn已经被销毁了,则要返回start()重新创建一个spawn Start (); if (facingLeft) {//当spawn飞离显示区域时,销毁spawn的gameObject对象 if (spawn.transform.position.x < leftSpawnPosX){ Destroy (spawn.gameObject); } } else { if (spawn.transform.position.x > rightSpawnPosX){ Destroy (spawn.gameObject); } } } }
注:
1.要将spawn的预制体的sorting layer设置为background,order in layer设置的数字越大则显示越靠前。
2.要掌握各个函数中的调用关系。start函数只需要在场景加载时调用一次,而update函数是每一帧调用一次。由于检测spawn是否飞离的屏幕所显示区域需要每一帧都调用,所以写在update函数中。
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- Unity3d获取系统时间
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- Unity3d发布IOS9应用时出现中文乱码的解决方法
- 分享一个开源的网络游戏服务器架构—HouHai
- Unity3D插件详细评测及教学下载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关