unity学习(三)
2016-01-21 01:37
453 查看
1. 新建plateForm预制件,添加脚本,加入四种不同的材质球及物理材质,即可使脚下的阶梯实现四种不同效果
using UnityEngine; using System.Collections; using System.Collections.Generic; public class PlateFormMan : MonoBehaviour { public Material[] mats; public PhysicMaterial[] phyMats; public int gameObjectNumber; public Vector3 startPosition; Vector3 nextPosition; public Transform prefab; Queue<Transform> queue; public int maxY, minY; public Vector3 minGap, maxGip; public Vector3 minSize, maxSize; public float offset; void Start() { queue = new Queue<Transform>(); for (int i = 0; i < gameObjectNumber;i++ ) { queue.Enqueue((Transform)GameObject.Instantiate(prefab)); } nextPosition = startPosition; for (int i = 0; i < gameObjectNumber;i++ ) { Recycle(); } } private void Recycle() { Vector3 position = nextPosition; Vector3 scale = new Vector3(Random.Range(minSize.x,maxSize.x),1,1); position.x += scale.x * 0.5f; position.y += scale.y * 0.5f; Transform t = queue.Dequeue(); t.localScale = scale; t.position = position; int r = Random.Range(0,mats.Length); t.renderer.material = mats[r]; t.collider.material = phyMats[r]; nextPosition += new Vector3(scale.x+Random.Range(minGap.x,maxGip.x),scale.y+Random.Range(minGap.y,maxGip.y),Random.Range(minGap.z,maxGip.z)); if(nextPosition.y>maxY) { nextPosition.y = maxY - Random.Range(minGap.y,maxGip.y); } if(nextPosition.y<minY) { nextPosition.y = maxY + Random.Range(minGap.y,maxGip.y); } queue.Enqueue(t); } void Update() { if(RunnerScript.distance-queue.Peek().position.x>=offset) { Recycle(); } } }
2. 给runner添加rigidbody(刚体),使用重力,添加脚本,将各项参数设置好之后就实现了runner在阶梯上行进,跳跃的效果
using UnityEngine; using System.Collections; public class RunnerScript : MonoBehaviour { public static float distance; public Vector3 jumpVelocity; bool isOnPlateForm=false; void Update() { transform.Translate(5f * Time.deltaTime, 0, 0); distance = transform.position.x; if(Input.GetButtonDown("Jump")) { if(isOnPlateForm) { rigidbody.AddForce(jumpVelocity, ForceMode.VelocityChange); } } } void OnCollisionEnter() { isOnPlateForm = true; } void OnCollisionExit() { isOnPlateForm = false; } }
相关文章推荐
- 四元数面向对象
- Unity 实时 半透明 阴影 shader
- Unity Motion Blur 运动模糊的实现
- Unity 中实现 打击感的物理
- unity初学(基本的方法)
- Unity 编辑器环境下不能正确加载Android Assetbundle 中的 Shader 解决方法
- Unity3d获取物体的所有子物体对象(child)
- unity car demo解析
- Unity 往复运动的一种计算方法
- Unity Button 动画
- Unity3D学习之Camera
- Unity判断当前鼠标顺逆时针旋转的简单算法
- Unity3D Android手机开发环境配置
- Unity3D插件之FingerGesture的使用
- Unity unsafe
- unity 更换鼠标图标 脚本
- Unity 4.2.0 官方最新破解版(Unity3D 最新破解版,3D游戏开发工具和游戏引擎套件)
- 下次有人不会配unity 安卓环境,就让他看看这个吧
- Unity3d 中的 A*寻路
- unity3d 2d游戏制作的模式