`
iaiai
  • 浏览: 2146682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[unity] 第一人称视角的实现

 
阅读更多
做一个第一人称视角的实现,并走动跳起

操作:
W[上] S[下] A[左] D[右]
+[速度加快] -[速度减慢]
鼠标控制方向


新建一项目,然后新建一地形,


然后建站天空,先导入资源


选择菜单上的Edit -> Render Settings

找到右面Skybox Material打开这个选项

选择一个合适的天空背景。

如果看不到效果,可点击下面选项来显示天空


Assets->Import Package->Terrain Assets导入陆地小草之类的资源
再导入Assets->Import Package->Character Controllers资源,此资源下有鼠标控制方向

设置陆地

选择好点添加

把需要的素材都添加进来

设置的第一个就是陆地的背景

这里看起来是比较暗的,需要设置一光源
从菜单中选择GameObject->Create other->Directional light创建一光源,设置好方向跟位置

然后设置一些山脉

然后给山脉上背景


效果如图:


选择Main Camera,点菜单Component->Camera-Control->Mouse Look
然后再添加建FPSWalker.js,如下:

var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;
var e:Vector3;

private var moveDirection = Vector3.zero;
private var grounded : boolean = false;

function FixedUpdate() {
	if(Input.GetKey(KeyCode.KeypadPlus)||Input.GetKey(KeyCode.Equals)){
         speed+=0.2;
    }
    if(Input.GetKey(KeyCode.KeypadMinus)||Input.GetKey(KeyCode.Minus)){
         if(speed>0){
             speed-=0.2;
         }else{speed=0;}
    }
    if (grounded) {
    	// We are grounded, so recalculate movedirection directly from axes
    	moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        moveDirection = transform.TransformDirection(moveDirection);
        moveDirection *= speed;
                
        if (Input.GetButton("Jump")) {
        	moveDirection.y = jumpSpeed;
        }
	}

	// Apply gravity
	moveDirection.y -= gravity * Time.deltaTime;
        
	// Move the controller
	var controller : CharacterController = GetComponent(CharacterController);
	var flags = controller.Move(moveDirection * Time.deltaTime);
	grounded = (flags & CollisionFlags.CollidedBelow) != 0;
    
    var camera : Camera = GameObject.Find("Main Camera").GetComponent(Camera);
    if(Input.GetKey(KeyCode.RightBracket)){
		if(camera.fieldOfView<90){
			camera.fieldOfView+=0.5;
		}
	}
	if(Input.GetKey(KeyCode.LeftBracket)){
		if(camera.fieldOfView>60){
			camera.fieldOfView-=0.5;
		}else {camera.fieldOfView=60;}
	}
}

@script RequireComponent(CharacterController)


然后选择Main Camera,把刚才的FPSWalker.js拖拽到右边窗口,如下:


保存,运行
  • 大小: 31.9 KB
  • 大小: 49.3 KB
  • 大小: 18.3 KB
  • 大小: 27 KB
  • 大小: 3.8 KB
  • 大小: 31.1 KB
  • 大小: 42.3 KB
  • 大小: 8.4 KB
  • 大小: 31.3 KB
  • 大小: 34.4 KB
  • 大小: 79.5 KB
  • 大小: 8.6 KB
  • 大小: 16.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics