unity学习(三)
来源:互联网 发布:银行软件 编辑:程序博客网 时间:2024/06/05 17:56
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; }}
0 0
- unity学习(三)
- unity ngui学习(三)
- Unity学习(三):Unity中的一些基本概念
- Unity学习笔记(三)----Space Shooter
- Unity学习之三
- Unity之Quaternion学习三
- Unity shader学习笔记 (三)
- 【Unity 3D】学习笔记三:TextField控件(文本框)
- Unity3D学习笔记(三)Unity的C#基础
- unity官方demo学习之Stealth(三)标签管理
- 2016-8-5 Unity学习笔记三(常用方法)
- UNITY 学习笔记(三)——UGUI使用
- Unity (三)
- 【Unity 3D】学习笔记二十三:unity游戏脚本(三)
- unity shader学习笔记(三)——在Unity中计算高光反射光照
- unity学习(三) layer的概念
- Unity学习笔记三 - Survival Shooter Tutorial
- unity之shader学习笔记(三)
- React Native iOS 开发环境搭建
- android网络编程 五(WebView)
- 程序员:如何接手垃圾代码?
- OpenGL头文件区别
- CocosCreator你又从新燃起我对Cocos的激情!
- unity学习(三)
- 支付宝 rsa 签名-客户端支付
- python初学main函数 文档字符串 编码声明
- uva 10759 throw dice
- 带环链表
- 【cocos2d-x 2.x 学习与应用总结】13: 借助CCGLProgram实现自定义绘制
- Eclipse stm32 编辑 编译 下载 调试 ( ST-Link J-Link ) 环境搭建 (使用GNU ARM Eclipse)
- DP -----Backpack
- TCP demo