Unity3D行走和飞行

 新建一个TestFlay.js脚本,内容如下:

var speed = 6.0;

var jumpSpeed = 8.0;
var gravity = 0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;
function FixedUpdate() {
my=moveDirection.y;
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
if (grounded) {
  moveDirection *= speed;
} 
else {
  moveDirection *= speed+transform.position.y/5;
  moveDirection.y=my;  
}
if(transform.position.y>=6){
if(Input.GetKey ("e")) {//按下e键向下飞行
  transform.Translate(0, -1, 0);   
}
}
if (Input.GetKey ("q") ) {   //按下q键向上飞行
  transform.Translate(0, 1, 0);
}
if(Input.GetKey("left shift")) {
  speed=6*5;
} else {        
  speed=6; 
}
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)
private var myWalker: FPSWalker=null;
var maxHeight: float=250;
function Start () {
myWalker = gameObject.GetComponent(FPSWalker); 
}
@script RequireComponent(FPSWalker)

 将它绑定到First Person Controller上,然后将前面的对勾勾掉。

再建一个脚本Fly.js,内容为:

var play:GameObject;
function Update () {
}
function OnGUI(){
if(GUI.Button(Rect(215,280,75,30),"Normal-Walk")){
    play.GetComponent("FPSWalker").enabled  = false;
    play.GetComponent("TestFly").enabled  = true;
}
if(GUI.Button(Rect(230,200,50,30),"Start-Fly")){
    play.GetComponent("FPSWalker").enabled  = true;
    play.GetComponent("TestFly").enabled  = false;
}
}

 

将其绑定到一个新建的GameObject上,运行即可看到效果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值