找回密码
 立即注册
查看: 5808|回复: 93

[脚本] 自己写的一个简单的角色控制脚本,JS,学习学习

  [复制链接]
发表于 2013-6-16 18:03 | 显示全部楼层 |阅读模式
//此脚本主要用来控制角色的平移旋转,W\A\S\D控制角色平移,Q\E控制角色旋转,空格为跳跃
//请轻喷,谢谢~~~!!
var speed : float = 20.0;
var jumpSpeed : float = 15.0;
var gravity : float = 20.0;
var rotateSpeed : float = 2.0;
var moveHorz : float = 0.0;
private var moveDirection : Vector3 = Vector3.zero;
private var rotateDirection : Vector3 = Vector3.zero;
var controller : CharacterController;
controller = GetComponent(CharacterController);
private var isControllable : boolean = true;        //用于判断玩家是否能控制角色
private var isWalking : boolean = false;
private var isBacking : boolean = false;
private var isLeft : boolean = false;
private var isRight : boolean = false;
private var isJumping : boolean = false;
function Update () {
//先判断角色是否可控,如果否,则重设输入,继续执行
if(!isControllable)
  Input.ResetInputAxes();
else {
  if (controller.isGrounded) {
   //我们着地了,所以直接通过轴重新计算move direction。
   isJumping = false;
   if(Input.GetAxis("Horizontal") != 0||Input.GetAxis("Vertical") !=0 ){
    moveDirection = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
    moveDirection = transform.TransformDirection(moveDirection);
    moveDirection *= speed;  
   
    if(Input.GetAxis("Vertical") > 0){
     isWalking = true;
    }  
    else if(Input.GetAxis("Vertical") < 0){
     isBacking = true;
    }
    else if(Input.GetAxis("Horizontal") > 0){
     isRight = true;
    }
    else if(Input.GetAxis("Horizontal") < 0){
     isLeft = true;
    }
   }
   else {
    isWalking = false;
    isBacking = false;
    isLeft = false;
    isRight = false;
    moveDirection = Vector3.zero;
   }
   moveHorz = Input.GetAxis("Horizontal");
   if(Input.GetKey(KeyCode.E)){
    //正Y轴为旋转轴
    rotateDirection = new Vector3(0,1,0);
   }
   else if(Input.GetKey(KeyCode.Q)){
    //负Y轴为旋转轴
    rotateDirection = new Vector3(0,-1,0);
   }
   else { rotateDirection = new Vector3(0,0,0); }
   if(Input.GetButton("Jump")){
    moveDirection.y = jumpSpeed;
   }
  }
  else {
   isJumping = true;
  }
//应用重力。
moveDirection.y -= gravity * Time.deltaTime;
//移动控制器。
controller.Move(moveDirection * Time.deltaTime);
//以rotateDirection为轴,绕其旋转
controller.transform.Rotate(rotateDirection * Time.deltaTime, rotateSpeed);
}
}
function IsWalking(){
return isWalking;
}
function IsBacking(){
return isBacking;
}
function IsLeft(){
return isLeft;
}
function IsRight(){
return isRight;
}
function IsJumping(){
return isJumping;
}
//将自定义的控制器放在Component里面,方便使用
@script AddComponentMenu("Players/Character_Controller");

发表于 2014-1-9 16:05 | 显示全部楼层
不错 加油……………………
发表于 2016-9-10 19:31 | 显示全部楼层

感谢楼主的无私分享!
发表于 2017-4-24 20:23 | 显示全部楼层
楼主是超人
发表于 2017-4-24 20:33 | 显示全部楼层
顶顶多好
发表于 2017-4-24 20:23 | 显示全部楼层
真心顶
发表于 2017-4-24 19:49 | 显示全部楼层
难得一见的好帖
发表于 2017-4-24 19:54 | 显示全部楼层
不错不错
发表于 2017-5-15 12:28 | 显示全部楼层
楼主是超人
发表于 2017-5-15 12:26 | 显示全部楼层
真心顶
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-4 20:23 , Processed in 0.121796 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表