【Unity 3D学习】键盘控制人物在场景中移动

一、第一种情况,键盘左右键控制人物旋转,让人物可以面向四方,然后上下键控制移动。

     public float speed = 3.0F;

     public float rotateSpeed = 3.0F;

     Character Controller controller;

     void Start () {

     controller = GetComponent();

     }

    void Update() {

    transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);

    Vector3 forward = transform.TransformDirection(Vector3.forward);//注意这个方法

    float curSpeed = speed * Input.GetAxis("Vertical");

    controller.SimpleMove(forward * curSpeed);

    }

二、第二种情况,键盘四个键可以同时控制人物移动。

   public float speed = 6.0F;

publicfloatjumpSpeed = 8.0F;

publicfloatgravity = 20.0F;

privateVector3 moveDirection = Vector3.zero;

CharacterController controller;

voidStart () {

controller = GetComponent();

}

voidUpdate() {

if(controller.isGrounded) {

moveDirection =newVector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));

moveDirection = transform.TransformDirection(moveDirection);

moveDirection *= speed;

if(Input.GetButton("Jump"))

moveDirection.y = jumpSpeed;

}

moveDirection.y -= gravity * Time.deltaTime;

controller.Move(moveDirection * Time.deltaTime);

}

ps:这里使用了组件“Character Controller”,要注意的是使用了这个之后好像会和组件“Nav Mesh Agent”冲突。所以使用键盘调试的时候不要使用“Nav Mesh Agent”,这个组件应该是和鼠标点击地面事件相结合的。因为自己同时测键盘和鼠标点击事件对人物移动的影响,所以才发生这样的问题,特地记录一下,找到原因的话再更。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 忧愁忧愁,怎么优着优着就仇了。
    于忆昔阅读 143评论 0 0
  • 今天为了一个许久没有吃到的食物,开车开了很久去买,买到的时候,都没等的及回家就开封吃了一口,当时我就想,人类对...
    水冰月再世阅读 135评论 0 2
  • 出生在商丘农村的80 90后的幸福童年 2. 麦收后的夜里,拿着手电筒去树林里照爬扎,洗干净,用盐腌上,再用油炒或...
    东十八月阅读 468评论 0 1
  • 随手翻开了新的一年的日记 虽然2018年才过去两个半月 惊叹于生活待我是如此的温柔 让我遇到了这么多温暖的人 刚刚...
    小花__阅读 835评论 0 1
  • 眼睛好疼 老天是不是有点不公平 为什么别人天天对着手机、电脑 眼睛不但不疼还不近视 视力那个好 是我戴眼镜都追不上...
    呆丫阅读 239评论 0 5