unity 3d孤岛求生案例代码解析
这是第一人称控制器脚本,如果把摄像机放在胶囊体后面感觉就是第三人称了啊。
#pragma strict var speed : float = 6.0;
var jumpspeed: float = 8.0;
var gravity : float = 20.0;
private var movedirection: Vector3 = Vector3.zero;
private var grounded: boolean = false;
private var qiqiu: boolean = false; function FixedUpdate () {
qiqiu = chufaqiqiu.power_q;
if (grounded){
movedirection = Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));
movedirection = transform.TransformDirection(movedirection);
movedirection *= speed;
if (Input.GetButton("Jump")){
movedirection.y = jumpspeed;
}
if (Input.GetKey(KeyCode.Q))
transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
if (Input.GetKey(KeyCode.E))
transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
if (Input.GetKey(KeyCode.W) && qiqiu){
movedirection.x *= 2;
movedirection.z *= 2;
} }
movedirection.y -= gravity*Time.deltaTime;
var controller: CharacterController = GetComponent(CharacterController);
var flags = controller.Move(movedirection*Time.deltaTime);
grounded = (flags & CollisionFlags.CollidedBelow) != 0; }
@script RequireComponent(CharacterController)
下面是碰撞器脚本
#pragma strict
@script RequireComponent(AudioSource)
import UnityEngine.UI; var tong_sound: AudioClip;
private var pzhuangtime: float = 0.0;
private var pzhuang: boolean = false;
private var pzhuangobject: GameObject; var pzhuang_time: float = 3.0;
var wenzi: Text; /* guang xian tou she peng zhuang var hit: RaycastHit;
if (Physics.Raycast(transform.position,transform.forward,hit,3)){
if(hit.collider.gameObject.tag == "hudie"){
var pzhuangobject: GameObject = hit.collider.gameObject;
pzhuangobject.SendMessage("mou ge han shu");
*/
function Update(){
//peng zhuang ji shi.
if(pzhuang){
pzhuangtime += Time.deltaTime;
print (pzhuangtime);
}
} function OnControllerColliderHit(hit: ControllerColliderHit){
/*if(hit.gameObject.tag == "tong"){
hit.gameObject.GetComponent.<AudioSource>().PlayOneShot(tong_sound);
}*/
//peng liang ci hu die cai hui xiao shi.
if(hit.gameObject.tag == "hudie"){
if(inventory.charge > 4){
pzhuang = true;
wenzi.text = "有本事,再碰我一下!";
}
else{
wenzi.text = "想抓我,呵呵&……*";
wenzi.enabled = true;
}
if(pzhuangtime > pzhuang_time){
hit.gameObject.GetComponent.<Animation>().Play("fly");
wenzi.text = "我可以飞的更高SB。";
pzhuangtime = 0.0;
pzhuang = false;
inventory.charge++; }
} }
下面是光线透射脚本。这脚本编译没错,但是功能没有实现。
#pragma strict
import UnityEngine.UI; function Updata(){
var hit: RaycastHit;
if (Physics.Raycast(transform.position,transform.forward,hit,3)){
if(hit.collider.gameObject.tag == "tong"){
var pzhuangobject: GameObject = hit.collider.gameObject;
gameObject.Find("Canvas/tong").GetComponent(Text).text = " 这是一个桶 ";
}
}
}
下面是触发器合集。
#pragma strict
import UnityEngine.UI; static var power_t: boolean = false;
private var pow_time: float = 0.0;
private var speed: float = 0.0;
private var wenzi_time: float = 0.0;
var wenzi: Text; function Start(){ } function Update(){
if (power_t == true){
pow_time += Time.deltaTime;
gameObject.Find("FPControl").GetComponent(fpcyidong).jumpspeed = 16.0; }
if (pow_time > 60.0){
power_t = false;
gameObject.Find("FPControl").GetComponent(fpcyidong).jumpspeed = 8.0;
pow_time = 0.0;
}
if (wenzi.enabled){
wenzi_time += Time.deltaTime;
if (wenzi_time > 10.0){
wenzi.enabled = false;
wenzi_time = 0.0;
}
}
}
function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
//transform.FindChild("door").SendMessage("dooropen");
//col.gameObject.SendMessage("pickup");
wenzi.text = "这是一个魔力桶,获得60秒超级跳!";
power_t = true ;
wenzi.enabled = true;
//Destroy(gameObject.transform.parent.gameObject);
} }
#pragma strict
import UnityEngine.UI; static var power_q: boolean = false;
var wenzi: Text;
function Start () { } function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
wenzi.text = "这是一个神奇的球,获得终身W冲刺";
power_q = true ;
wenzi.enabled = true;
}
}
#pragma strict
import UnityEngine.UI;
var wenzi: Text; function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
if(inventory.charge > 5){
wenzi.text = "啊我再飞#¥!";
Destroy(gameObject);
Destroy(gameObject.Find("WaterBasicDaytime"));
wenzi.enabled = true; } }
#pragma strict import UnityEngine.UI;
import UnityEngine.SceneManagement; var wenzi: Text; function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
wenzi.text = "GAME OVER WISH TO NEXT TIME";
Destroy(col.gameObject);
wenzi.enabled = true;
SceneManager.LoadScene("02");
}
}
#pragma strict
import UnityEngine.UI; var wenzi: Text; function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
wenzi.text = "GAME OVER";
Destroy(col.gameObject);
wenzi.enabled = true;
}
}
#pragma strict private var chufatime: float = 0.0;
private var chufa: boolean = false;
private var chufaobject: GameObject; var chufa_time: float = 3.0;
var collecthudie: AudioClip;
var wenzi : Text; function Update(){
if(chufa){
chufatime += Time.deltaTime;
print(chufatime);
}
} function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
if (inventory.charge > 4){
chufa = true;
}
else
wenzi.text = "bang wo na jige xiang zi lai";
if(chufatime > chufa_time){
gameObject.GetComponent.<Animation>().Play("fly");
AudioSource.PlayClipAtPoint(collecthudie,transform.position);
chufatime = 0.0;
chufa = false;
}
}
}
下面是旋转和变色脚本
#pragma strict
function Update () {
transform.Rotate(0,100*Time.deltaTime,0);
}
function OnTriggerEnter(col:Collider){
if(col.gameObject.tag == "Player"){
//transform.FindChild("door").SendMessage("dooropen");
col.gameObject.SendMessage("pickup");
Destroy(gameObject);
}
}
#pragma strict
var t:float = 0; function Start () { } function Update () {
t += Time.deltaTime;
if (t <= 2){
GetComponent.<Renderer>().material.color = Color.blue;
}
else if (t > 2 && t <= 5){
GetComponent.<Renderer>().material.color = Color.red;
}
else{
GetComponent.<Renderer>().material.color = Color.green;
}
if (t > 7)
t = 0; }
下面是收集物品脚本,另一内建数组var cms:Renderer[]; for(var co:Renderer in cms){co.material.color = Color.red;},给数组内所有对象的 渲染器组件 染色。
#pragma strict
import UnityEngine.UI; static var charge: int = 0;
var collectSound: AudioClip; var powerui_raw: RawImage;
var textures: Texture2D[];
var wenzi: Text; function Start () {
charge = 0;
}
function pickup(){
AudioSource.PlayClipAtPoint(collectSound,transform.position);
charge++;
wenzi.text = "哎呀获得一个箱子";
powerui_raw.texture = textures[charge];
wenzi.enabled = true;
print (charge); }
最后是游戏开始脚本
#pragma strict
import UnityEngine.SceneManagement; function OnGUI(){
if(GUI.Button(Rect(180,100,60,30),"退出")){
Application.Quit();
}
if(GUI.Button(Rect(280,100,60,30),"开始")){
Application.LoadLevel("01");
} }
function Update(){
if (Input.GetKey(KeyCode.Q))
transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
if (Input.GetKey(KeyCode.E))
transform.Rotate(0,25*Time.deltaTime,0,Space.Self);
}
loadlevel是能用的但是过时了,用LoadScene
unity 3d孤岛求生案例代码解析的更多相关文章
- 使用 Unity 3D 开发游戏的架构设计难点
Unity 3D 引擎对于开发者来说,入手非常快,因为它采用的是 C# 作为开发语言,这也大大降低了开发者的门槛.但凡只要懂一门编程语言的人都能使用 Unity 3D 引擎开发,另外 Unity 3D ...
- (转)stage 3d or unity 3d
这个是这样子的.stage3d如果不使用flascc的话,性能会卡在as上面.你没卡是因为你用的效果还不够高级.往深了走的高端应用就是卡as性能上.这不是你代码能优化了的.我们后来都改用flascc写 ...
- unity 3d开发的大型网络游戏
unity 3d开发的大型网络游戏 一.总结 1.unity的官网上面应该有游戏列表 2.unity3D是很好的3d游戏引擎,也支持2d,也能做很多画面精良的3A级游戏 3.范围:电脑游戏,手机游戏, ...
- 出售一套Unity + Lua热更新框架代码
出售一套Unity + Lua的客户端框架代码,功能有资源管理.网络通信.配置文件解析.热更新.文件读写.Lua加密揭秘.UI框架.打包工具.编辑器工具等,已经在多个实际项目(已上线)中使用.代码优雅 ...
- 另类Unity热更新大法:代码注入式补丁热更新
对老项目进行热更新 项目用纯C#开发的? 眼看Unity引擎热火朝天,无数程序猿加入到了Unity开发的大本营. 一些老项目,在当时ulua/slua还不如今天那样的成熟,因此他们选择了全c#开发:也 ...
- Unity 3D 游戏上线之后的流水总结
原地址:http://tieba.baidu.com/p/2817057297?pn=1 首先.unity 灯光烘焙 :Unity 3D FBX模型导入.选项Model 不导入资源球.Rig 不导入骨 ...
- C#程序员整理的Unity 3D笔记(十五):Unity 3D UI控件至尊–NGUI
目前,UGUI问世不过半年(其随着Unity 4.6发布问世),而市面上商用的产品,UI控件的至尊为NGUI:影响力和广度(可搜索公司招聘Unity 3D,常常能看到对NGUI关键词). NGUI虽然 ...
- C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
如果你接触过<设计模式>.软件架构的编程思想,就会知道优秀的设计准则:“组合优于继承的”. 这句话很简短,但开始学习OOP的时候,真切的是—-不太好理解(以我个人当初学习为例). OOP的 ...
- 【图说】Eclipse与Unity 3D协同工作
原地址:http://blog.csdn.net/h570768995/article/details/9355313 Eclipse开发过程中总会碰到很多的难题,如何利用好工具帮助我们更快捷的开发也 ...
随机推荐
- C#泛型代理、泛型接口、泛型类型、泛型方法
//http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html //http://www.baqima.com/a/2628.h ...
- 1、B2BUA
链接1:proxy和B2BUA的区别和联系:http://www.cnblogs.com/gnuhpc/archive/2012/12/11/2813499.html 链接2:http://blog. ...
- Node.js 自学之旅
学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里 ...
- Request与session与application的区别
(1)request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到 ...
- Java中的内部类(回调)
一.内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所 ...
- xcode-git笔记
git initgit add .vi .gitignore /*将代码区蓝色字体的内容*/git commit -m "初次建立"git remote add origin ht ...
- ASP.NET MVC 中将FormCollection与实体间转换方法
将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. public ActionResult Create(Fo ...
- (分享)多功能 PDF转换器v3.0版本
转换的效果非常不错,值得使用.破解成功的截图:这个程序必须随便输入注册码注册,不然会有水印的. 这是程序主界面了 正在测试pdf转word过程,转换结果个人感觉非常不错,跟原版pdf的格式非常接近,个 ...
- asp.net上传文件超过了最大请求长度[转]
错误消息:超过了最大请求长度 错误原因:asp.net默认最大上传文件大小为4M,运行超时时间为90S. 解决方案 1. 修改web.config文件可以改变这个默认值 ...
- 使用Plsql将Excel数据导入Oracle数据库
1.在plsql页面,Tools-->ODBC Importer... 2.配置被导入的excel files 3.选择excel文件 4.选择Excel中要被导入的的sheet工作簿,选择之后 ...