Unity基础小案例--跳动的小球、自定义第一人称控制器

整个小练习案例的项目结构

Unity基础小案例--跳动的小球、自定义第一人称控制器_第1张图片

先看地面Plane--地面需要设置材质(有弹跳系数)因为案例中有跌落的小球

Unity基础小案例--跳动的小球、自定义第一人称控制器_第2张图片Unity基础小案例--跳动的小球、自定义第一人称控制器_第3张图片

再看跌落的小球--必须设置弹跳材质--运行后小球弹跳效果、颜色间断变化

Unity基础小案例--跳动的小球、自定义第一人称控制器_第4张图片

#pragma strict
var t:float=0;
function Start () {

}

function Update () {
	t+=Time.deltaTime;
	
	if(t>0 && t<=2){
	renderer.material.color=Color.blue;
	
	}else if(t>2 && t<=5) {renderer.material.color=Color.red;}else{renderer.material.color=Color.green;}
	
	if(t>7){t=0;}
} 

接下里看Cube砖块--运行后砖块直接竖直方向飞走了

Unity基础小案例--跳动的小球、自定义第一人称控制器_第5张图片

using UnityEngine;
using System.Collections;

public class c1 : MonoBehaviour {

	public float movespeed =5.0f;
	float blastmovespeed;

	void Update () {
	blastmovespeed = movespeed*2.0f;
	Vector3 sudu = new Vector3(0,blastmovespeed,0);
		rigidbody.velocity = sudu;
	}
}


接下来看Cube1--运行后,鼠标移动到砖块上颜色变红、并且旋转,离开后欢迎颜色、停止旋转,按下鼠标播放音乐,播放状态中,再次按下音乐停止

Unity基础小案例--跳动的小球、自定义第一人称控制器_第6张图片Unity基础小案例--跳动的小球、自定义第一人称控制器_第7张图片

#pragma strict

var oldcolor:Color;
var bf:boolean=false;
function Start () {
	oldcolor=renderer.material.color;

}



function OnMouseOver(){
		
		renderer.material.color=Color.red;
		
		transform.Rotate(0,180*Time.deltaTime,0);

}

function OnMouseExit(){
		
		renderer.material.color=oldcolor;
		

}

function OnMouseDown(){
		if(bf){
				audio.Pause();
				bf=false;
		}else{
			audio.Play(); 
			bf=true;
		}
}



接下来看文字--运行后文字累加显示5050

Unity基础小案例--跳动的小球、自定义第一人称控制器_第8张图片

#pragma strict
 var  counter:int=0;
function Start () {
			var i:float =0;
			for (i=1;i<=100;i++){
			
			counter=counter+i;
						
			}
			gameObject.Find("wenzi").GetComponent(GUIText).text="累加结果是:"+counter;
}


接下来看灯光--运行后按住L键亮度增加,按住K键亮度减少,按住J键文字数字累加
Unity基础小案例--跳动的小球、自定义第一人称控制器_第9张图片

#pragma strict

var thelight:GameObject;
var thetxt:GameObject;
var theCube1:GameObject;

function Start () {
		thelight=GameObject.Find("Spotlight");
		thetxt=GameObject.Find("wenzi");
		theCube1=GameObject.Find("Cube1");
}

function Update () {
		if(Input.GetKey(KeyCode.L)){thelight.light.intensity+=0.01;
			thetxt.guiText.text="当前亮度:"+thelight.light.intensity;
		}
		if(Input.GetKey(KeyCode.K)){thelight.light.intensity-=0.01;
			thetxt.GetComponent(GUIText).text="当前亮度:"+thelight.light.intensity;
		}
		
		if(Input.GetKey(KeyCode.J)){thetxt.SendMessage("Start");
			
		}
}

接下来看第一视角--胶囊体可以adws4个方向移动,移动鼠标不会在向上向下看了,碰到cube1不会穿过

Unity基础小案例--跳动的小球、自定义第一人称控制器_第10张图片Unity基础小案例--跳动的小球、自定义第一人称控制器_第11张图片


#pragma strict
//速度
var speed:float=6.0;
//跳跃速度
var jumpspeed:float =8.0;
//重力
var gravity:float =20.0;
//移动方向--代表(0.0.0)的意思
private var movedirection:Vector3=Vector3.zero;
//是否在地面上
private var grounded:boolean=false;

function FixedUpdate(){
		if (grounded){
			movedirection=Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));
			
			movedirection=transform.TransformDirection(movedirection);
			movedirection*=speed ;
						
		}
		//就是初始化y值变小
		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)!=0;  
				
}

@script RequireComponent(CharacterController)





你可能感兴趣的:(Unity3d脚本)