Unity3D+8个入门代码示例
- 格式:pdf
- 大小:369.41 KB
- 文档页数:2
Unity3D简单的怪物AI代码(C#脚本)using UnityEngine;using System.Collections;public class BoosAI : MonoBehaviour{//敌人状态//敌人站立状态public const int STATE_STAND = 0;//敌人行走public const int STATE_WALK = 1;//敌人奔跑状态public const int STATE_RUN = 2;//记录敌人的当前状态private int enemyState;//主角对象private GameObject hero;//备份上一次的敌人思考时间private float backUptime;//敌人思考下一次行为的时间public const int AI_THINK_TIME = 2;//敌人的巡逻范围public const int AI_ATTACK_DISTANCE = 10;// Use this for initializationvoid Start(){//得到主角对象hero = GameObject.Find("Cube");//设置敌人的默认状态站立enemyState = STATE_STAND;}// Update is called once per framevoid Update(){//判断敌人与主角的距离if (Vector3.Distance(transform.position, hero.transform.position) <(AI_ATTACK_DISTANCE)){//敌人进入奔跑状态gameObject.animation.Play("run");enemyState = STATE_RUN;//设计敌人面朝主角方向transform.LookAt(hero.transform);}//敌人进入巡逻状态else{//计算敌人的思考时间if (Time.time - backUptime >= AI_THINK_TIME){//敌人开始思考backUptime = Time.time;//取得0~2之间的随机数int rand = Random.Range(0,2);if (rand == 0){//敌人进入站立状态gameObject.animation.Play("idle");enemyState = STATE_STAND;}else if (rand == 1){//敌人进入站立状态//敌人随机旋转角度Quaternion rotate = Quaternion.Euler(0,Random.Range(1,5) * 90,0);//1秒内完成敌人旋转transform.rotation = Quaternion.Slerp(transform.rotation,rotate,Time.deltaTime * 1000);//播放行走动画gameObject.animation.Play("walk");enemyState = STATE_WALK;}}}switch (enemyState){case STATE_STAND:break;case STATE_WALK://敌人行走transform.Translate(Vector3.forward * Time.deltaTime);break;case STATE_RUN://敌人朝向主角奔跑if (Vector3.Distance(transform.position, hero.transform.position) > 3){transform.Translate(Vector3.forward * Time.deltaTime * 3);}break;}}}。
1.右键菜单function OnGUI(){if(Input.GetMouseButton(1)){GUILayout.BeginArea (new Rect (Input.mousePosition.x,Screen.height-Input.mousePosition.y,200,200));GUILayout.Box("This is a Context Menu");GUILayout.EndArea ();}}/*if(Input.GetMouseButton(0))Debug.Log("Pressed left click.");if(Input.GetMouseButton(1))Debug.Log("Pressed right click.");if(Input.GetMouseButton(2))Debug.Log("Pressed middle click.");*/2.用辅助键/双键控制视角using UnityEngine;using System.Collections;public class ControlCamerMove : MonoBehaviour {void Update () {if(Input.GetKeyDown(KeyCode.LeftControl)){this.GetComponent<MouseLook>().enabled = false;}if(Input.GetKeyUp(KeyCode.LeftControl)){this.GetComponent<MouseLook>().enabled = true;}}}3.与网页交互-打开网页function OnGUI()bel("当前场景:"+ Application.loadedLevelName);if(GUILayout.Button("打开网页"))Application.OpenURL("");}4.在unity中播放视频--绘制#pragma strictvar movTexture:MovieTexture;function Start (){movTexture.loop = true;}function OnGUI(){GUI.DrawTexture(new Rect (0,0,Screen.width,Screen.height),movTexture,ScaleMode.StretchToFill);if(GUILayout.Button("播放/继续")){if (!movTexture.isPlaying){movTexture.Play();}}if(GUILayout.Button("暂停播放")){movTexture.Pause();}if(GUILayout.Button("停止播放")){ 贴图movTexture.Stop();}}5.在unity中播放视频--作为plane的材#pragma strictvar movTexture:MovieTexture;function Start (){this.renderer.material.mainTexture = movTexture;movTexture.loop = true;}function OnGUI(){if(GUILayout.Button("播放/继续")){if (!movTexture.isPlaying){movTexture.Play();}}if(GUILayout.Button("暂停播放")){movTexture.Pause();}if(GUILayout.Button("停止播放")){movTexture.Stop();}}6.用材质偏移模拟水流效果using UnityEngine;using System.Collections;public class Whatflow : MonoBehaviour {public float scrollSpeed=3;void Update () {float offset = Time.time*scrollSpeed;renderer.material.SetTextureOffset("_MainTex",new Vector2(0,offset));}}7.从网页上获取一张图片并动态使用var url = "/attachments/images/201011/20101110/20101109_da85542f8635f3c5 b963vil1B8qeeS9O.jpg";function Start () {var www : WWW = new WWW (url);//定义www为WWW类型并且等于被下载的内容。
unity3D 基础(1)unity 3D 面板由菜单栏,工程视图,层级视图,属性视图,场景视图,游戏视图,调试窗口。
(2)Reset:进行复位(3)Inspector: 属性窗口(4)ISO(平行视图下) Persp(透视视图下)(5)ALT+鼠标左键:围绕焦点旋转视野(6)无论添加水体或是天空盒子还是第几人称都是先导入包然后在属性面板进行操作(7)添加阴影在平行光的属性面板中操作。
(8)绘制公路导包EasyRoads3D创建EasyRoad3D .创建前三个(9)树木创建器在GameObject Create Other Tree在Inspect窗口中显示出Tree Creator具体步骤1>选择树根建立主干然后设置分支Distribution为whorled设置Frequency为30。
2>提高主干开始长出分支干的高度。
3>使得分支向上生长更节点属性:Tree Seed :改变部位在父物体上的位置。
Area Spread:蔓延区域。
Ground Offset:地面偏移。
LOD Quality:定义树的细节细节级别。
AmbientOcclusion:是否产生环境遮挡效果。
树干节点属性:Group Seed:子枝干在父枝干的位置。
Frequency:频率,在调节枝干产生的位置。
Distribution :枝干分布。
Twirl:子枝干在父枝干的扭转角度。
Growth Angle:子枝干生长角度。
Branch Material:枝干的材质。
Length :枝干的长度范围。
想了解更多到狗刨学习网。
Unity3D简单⼩游戏脚本(1):EatCoin 今⽇闲来⽆事,敲些代码也⽆妨1//coin脚本,命名为Pickup23using System.Collections;4using System.Colllections.Generic;5using UnityEngine;67public class Pickup : MonoBehaviour {8//初始化9void start(){10 }11//每帧刷新12void Updata(){13 transform.Rotate(new Vector3(30,30,30)*Time.deltaTime);14//随时间进⾏30°旋转15 }16 }//player脚本,命名为Playerusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Player : MonoBehaviour {Rigidbody rigid; //定义刚体float speed =3; //设定速度int count = 0; //设定⾦币数public AudioClip Pickup,Victory,Six,two,three,four,five;//定义各阶段的⾳效,并将其可见public UnityEngine.UI.Text tips; //定义UI计分板// Use this for initializationvoid Start () {rigid = GetComponent<Rigidbody> (); //初始化刚体组件}// Update is called once per framevoid Update () {var h = Input.GetAxis ("Horizontal"); //定义并得到输⼊的⽔平横轴位移var v = Input.GetAxis ("Vertical"); //定义并得到输⼊的⽔平纵轴位移var movement = new Vector3(h, 0, v); //定义位移⽮量rigid.AddForce (movement*speed);//为刚体添加⼒,⼤⼩为位移⽮量×速度Vector3 player =GetComponent<Transform>().position;//得到Player的当前三维坐标if (player.y < -3) {tips.text = "YOU LOST(失败没有⾳效,弟弟)";//若纵轴⼩于-3,提⽰游戏失败}}private void OnTriggerEnter(Collider other) //碰撞函数{if (other.GetComponent<Pickup> ()) { //如果发⽣碰撞other.gameObject.SetActive (false); //被碰撞者消失AudioSource.PlayClipAtPoint (Pickup, transform.position);//当前位置产⽣⾳效count++; //coin数增加RefreshTips (); //更新计分板}}void RefreshTips() //更新计分板函数{tips.text = " 你的⾦币数: " + count; //显⽰⽂字//达到不同coin数时的提⽰⾳效if (count == 2) {AudioSource.PlayClipAtPoint (two, transform.position);}if (count == 3) {AudioSource.PlayClipAtPoint (three, transform.position);}if (count == 4) {AudioSource.PlayClipAtPoint (four, transform.position);}if (count == 5) {AudioSource.PlayClipAtPoint (five, transform.position);}if (count == 6) {AudioSource.PlayClipAtPoint (Six, transform.position);tips.text = " YOU WIN ";//开始计时float m_time = 0f;m_time += Time.time;if (m_time >= 3f) {AudioSource.PlayClipAtPoint (Victory, transform.position); //延时播放,似乎没什么⽤QAQ }}}}游戏成品(渣的⼀批)链接:提取码:0uxq。