Unity3D 5.x 简单实例 - 脚本编写
1,Vector3 类型变量存储向量坐标值
|
Vector3.forward |
Vector3(0,0,1) |
|
Vector3.up |
Vector3(0,1,0) |
|
Vector3.right |
Vector3(1,0,0) |
|
Vector3.zero |
Vector3(0,0,0) |
|
Vector3.one |
Vector3(1,1,1) |
2,给对象RigidBody添加组件 ,然后给RigidBody一个速率(velocity)让它的移动
using UnityEngine;
using System.Collections; public class moveFwd : MonoBehaviour
{ public float moveSpeed = 0.1f; // Use this for initialization
void Start()
{ } // Update is called once per frame
void Update()
{
Vector3 moveForward = new Vector3(moveSpeed, , moveSpeed);
this.GetComponent<Rigidbody>().velocity = moveForward;
}
}

3, 鼠标移入变红色,鼠标移出还原颜色,点击鼠标播放声音,JS代码实现:
#pragma strict var oldColor:Color;
var audioPlay=false; function Start () {
oldColor= this.GetComponent(MeshRenderer).material.color;
} function Update () { } //鼠标移入
function OnMouseOver(){
this.GetComponent(MeshRenderer).material.color=Color.red; //旋转
this.transform.Rotate(,-*Time.deltaTime,);
print("OnMouseOver");
}
//鼠标移出
function OnMouseExit(){
this.GetComponent(MeshRenderer).material.color=oldColor;
print("OnMouseOut");
}
//点击鼠标
function OnMouseDown(){
if (audioPlay==false) {
this.GetComponent(AudioSource).Play();
audioPlay=true;
}else {
this.GetComponent(AudioSource).Pause();
audioPlay=false;
}
print("OnMouseDown"); }
4, 操作文本的时候,记得先引用 UnityEngine.UI:
using UnityEngine;
using System.Collections;
using UnityEngine.UI; public class count : MonoBehaviour
{
void OnMouseDown() {
GameObject.Find("Canvas/Text").GetComponent<Text>().text = "Score";
}
}
5,给小球添加物理材质,是小球跳动:Asseets → Create → Physic Material :

JS控制小球颜色变化:
var t:float=;
function Update () {
t+=Time.deltaTime;
//每3秒换一个随机颜色
if(parseInt(t)%==){
gameObject.Find("Sphere").GetComponent(MeshRenderer).material.color=Color(Random.Range(,)/255f,Random.Range(,)/255f,Random.Range(,)/255f);
} }
6, 获取对象放在Start()方法里面,不要放到Update()里面,这样会提高运行效率,JS控制灯光变强、变弱:
#pragma strict
import UnityEngine.Light; var directLight:GameObject;
var theTxt:GameObject;
var objCube:GameObject; function Start () {
//获取对象
directLight=gameObject.Find("Directional Light");
theTxt=gameObject.Find("Canvas/Text");
objCube=gameObject.Find("Cube");
} function Update () { //更改灯光亮度
if (Input.GetKey(KeyCode.L)) {
directLight.GetComponent(Light).intensity+=0.1;
};
if (Input.GetKey(KeyCode.K)) {
directLight.GetComponent(Light).intensity-=0.1;
};
theTxt.GetComponent(Text).text = directLight.GetComponent(Light).intensity.ToString();
if (Input.GetKey(KeyCode.S)) {
//调用了Cube组件中的go方法
objCube.SendMessage("go");
};
}
7,代码实现第一人称控制器,思路:
①新建项目,添加地面Plane,创建3D Object(Capsule) ,添加Cute
②给Capsule附加脚本让其能够上下左右移动
③把Main Camera的Position调节和Capsule一致、略高,然后把MainCamera作为Capsule的Child Object
JS 代码:
#pragma strict
@script RequireComponent(CharacterController) var speed:float=6.0;
var jumpspeed:float =8.0;
var gravity:float =1.0;
private var movedirection:Vector3=Vector3.zero;
private var grounded:boolean=false; function FixedUpdate(){
if (grounded){
movedirection=Vector3(Input.GetAxis("Horizontal"),,Input.GetAxis("Vertical")); movedirection=transform.TransformDirection(movedirection);
movedirection*=speed ; if(Input.GetButton("Jump")){
movedirection.y=jumpspeed;
}
}
movedirection.y -= gravity*Time.deltaTime; var controller:CharacterController=GetComponent(CharacterController);
//移动命令 var flags=controller.Move(movedirection*Time.deltaTime);
//CollisionFlags.CollidedBelow 底部发生了碰撞“flags & CollisionFlags.CollidedBelow”返回1
//CollisionFlags.CollidedNone 没发生碰撞“flags & CollisionFlags.CollidedNone”返回1
//CollisionFlags.CollidedSides 四周发生了碰撞“flags & CollisionFlags.CollidedSides”返回1
//CollisionFlags.CollidedAbove 顶端发生了碰撞“flags & CollisionFlags.CollidedAbove”返回1
// 单个& 表示比较两个二进制数值
//位掩码技术
grounded=(flags & CollisionFlags.CollidedBelow)!=;
}
参考 :
Unity3D 5.x 简单实例 - 脚本编写的更多相关文章
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- Unity3D 5.x 简单实例 - 孤岛场景搭建
1,如果我们的Unity 5.X 是从这个地址下载的,安装后不会有资源包,则需要从Unity3D官网下载资源包: Standard Assets (Unity 5.x) 下载 下载后安装后,Unity ...
- Unity3D 5.x 简单实例 - 发射炮弹
1,下载.安装: http://unity3d.com/cn/get-unity/download/archive 建议直接借助 UnityDownloadAssistant 进行安装,根据需要勾选需 ...
- Unity3D自定义编辑器简单实例
MenuItem:在标题栏自定义菜单.需要在Editor文件夹内创建脚本,无需挂载.但是注意其下的函数必须为静态函数. using UnityEngine; using UnityEditor; pu ...
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- linux脚本之简单实例
利用脚本计算10的阶乘 简单说明一下: #!/bin/bash说明该shell使用的bash shell程序.这一句不可少for i in `seq 1 10`还可以写成for i in 1 2 3 ...
- Wordpress解析系列之PHP编写hook钩子原理简单实例
Wordpress作为全球应用最广泛的个人博客建站工具,有很多的技术架构值得我们学习推敲.其中,最著名最经典的编码技术架构就是采用了hook的机制. hook翻译成中文是钩子的意思,单独看这个词我们难 ...
- BAT脚本编写教程简单入门篇
BAT脚本编写教程简单入门篇 批处理文件最常用的几个命令: echo表示显示此命令后的字符 echo on 表示在此语句后所有运行的命令都显示命令行本身 echo off 表示在此语句后所有运行的命 ...
- selenium从入门到应用 - 2,简单线性脚本的编写
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境下 ...
随机推荐
- Python黑帽编程2.1 Python编程哲学
Python黑帽编程2.1 Python编程哲学 本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言.我带大家膜拜下Python作者的Python之禅,然后再来了解下P ...
- Web3DGame之路(三)分析babylonjs
BabylonJS的例子十分详实 http://doc.babylonjs.com/tutorials Babylonjs的学习比较顺畅,开始做一些深入分析 一.语言选择 首先是js还是ts的问题 ...
- Android学习——第一个NDK程序
在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...
- 总体介绍ASP.NET Web API下Controller的激活与释放流程
通过<ASP.NET Web API的Controller是如何被创建的?>我们已经对HttpController激活系统的核心对象有了深刻的了解,这些对象包括用于解析程序集和有效Http ...
- Android开发学习之路-Android6.0运行时权限
在Android6.0以后开始,对于部分敏感的“危险”权限,需要在应用运行时向用户申请,只有用户允许的情况下这个权限才会被授予给应用.这对于用户来说,无疑是一个提升安全性的做法.那么对于开发者,应该怎 ...
- Nginx配置文件nginx.conf详解
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...
- OpenCASCADE PCurve of Topological Face
OpenCASCADE PCurve of Topological Face eryar@163.com Abstract. OpenCASCADE provides a class BRepBuil ...
- 《JS设计模式笔记》 3,观察者模式
<script type="text/javascript"> //挂插着模式又叫发布订阅模式应该是最常用的模式 //1,dom事件就是观察者模式,只要订阅了click ...
- r.js结合gulp等于webpack(angular为例)
本人大学时玩dojo,开始了AMD模块化的不归路,工作后一直使用requirejs,感觉非常好.但是,近来随着react的火热,webpack成为了天下无敌的模块化工具,能做模块化,合并压缩,监视等, ...
- MySQL密码忘记,怎么办?
如果哪天你忘记了线上MySQL数据库的root密码,怎么办? 大家往往会想到skip-grant-tables参数,具体步骤如下: 1. 关闭MySQL数据库,因为root密码忘记了,mysqladm ...