unity3d中实现正常行走与飞行模式

3 replies [最后一篇]
50988
User offline. Last seen 27 周 1 天 ago. Offline
高级会员
Joined: 10/13/2009
Points: 678

 新建一个cube放在高空   放两个FPS将其中一个FPS2放到cube上,把代码Fly.js放到FPS2上

var speed = 15.0;

var jumpSpeed = 8.0;

var gravity = 20.0;

private var moveDirection = Vector3.zero;

var target:Transform;

private var grounded : boolean = true;

 function Po(){

 var fl=GameObject.Find("FirstPersonController2");

 fl.transform.position=Vector3(target.transform.position.x,150,target.transform.position.z);

 print(fl.transform.position);

}

function FixedUpdate() { 

 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;

}

 

 

行走模式  将walk.js放到地面FPS上

var speed = 11;

var jumpSpeed = 8.0;

var gravity = 20.0;

var target:Transform;

private var moveDirection = Vector3.zero;

private var grounded : boolean = false;

function Po(){

 var wak=GameObject.Find("FirstPersonController");

 wak.transform.position=Vector3(target.transform.position.x,2.0,target.transform.position.z);

 print(wak.transform.position);

}

function FixedUpdate() {

 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;

}

hdswb
User offline. Last seen 2 天 9 小时 ago. Offline
初级会员
Joined: 10/07/2011
Points: 75

 都没解释,好像不能用了

kfjtgudng
User offline. Last seen 10 周 19 小时 ago. Offline
注册用户
Joined: 11/02/2011
Points: 0

 那个target是什么意思?

吾缺一毛
User offline. Last seen 6 周 4 天 ago. Offline
初级会员
Joined: 04/11/2011
Points: 65

请问FPS是什么意思?