Unity入门操作_ 角色控制器_015

CharacterController
编写第一人称控制器

using UnityEngine;
using System.Collections;

public class Controller : MonoBehaviour {

CharacterController _characterController;
Rigidbody _rigidbody;

float _horizontal;
float _vertical;
Vector3 direction;

public float speed = 1;
public float jumpPower = 5;

// Use this for initialization
void Start () {

    _characterController = this.GetComponent<CharacterController>();
    _rigidbody = this.GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {

    _horizontal = Input.GetAxis("Horizontal");
    _vertical = Input.GetAxis("Vertical");

    if(_characterController.isGrounded)
    {
        direction = new Vector3(_vertical, 0, _horizontal * -1);
        if (Input.GetKeyDown(KeyCode.Space))
        {
            direction.y = jumpPower;
        }
    }

    direction.y -= 5 * Time.deltaTime;
    _characterController.Move(direction * Time.deltaTime * speed);
}

}
using UnityEngine;
using System.Collections;

[RequireComponent (typeof(CharacterController))]
[RequireComponent (typeof(Rigidbody))]
public class CharactorMove : MonoBehaviour {

//移动的速度
public float speed;
//鼠标的水平偏移量
float offsetMouseX;
//鼠标在竖直方向上的偏移量
float offsetMouseY;
//人称控制器在水平方向上的旋转角度
public float rotateX;
private CharacterController m_CharacterController;
private float horizontal;
private float vertical;
private Camera m_mianCamera;
// Use this for initialization
void Start () {
    m_CharacterController = GetComponent<CharacterController>();
    m_mianCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
}

// Update is called once per frame
void Update () {
    horizontal = Input.GetAxis("Horizontal");
    vertical = Input.GetAxis("Vertical");

    //控制第一人称控制器的移动效方向
    Vector3 direction = (transform.forward * vertical + horizontal * transform.right).normalized;
    m_CharacterController.SimpleMove(direction * speed * Time.deltaTime);
    //第一人称控制器左右旋转(此时是游戏界面的二维向量坐标)
    offsetMouseX = Input.GetAxis("Mouse X");
    m_CharacterController.transform.Rotate(Vector3.up * offsetMouseX * rotateX * Time.deltaTime);
    //第一人称控制器抬头低头看(此时是游戏界面的二维向量坐标)
    offsetMouseY = Input.GetAxis("Mouse Y");
    Vector3 cameraRotateAngle = -offsetMouseY * Vector3.right;
    m_mianCamera.transform.eulerAngles += cameraRotateAngle;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
U3D demo 代码案例。本案例介绍了U3D从开始到入门的全部课程。内部包含30个课程案例。代码经过真实测试,非常珍贵。适用于初学者,想入门U3D的游戏开发人员。(U3D版本是 U3D 5.3.6) 包含内容章节简介: 目录: 第1 课: GUIText 或者 GUITexture 组件 第2课:游戏场景基本操作 第3课: 变量与基本数据类型 第3课: 特效组件之 TrailRenderer 第3课: 制作 3D模型 第4课: 3D模型--美化-材质球 第4课: 特效组件--LineRenderer 第4课: 运算符与表达式 【上】 第5课: 声音组件-- AudioSource 第 5 课:运算符与表达式【下】 第 6 课: API--实例化与销毁 第 6 课: 基本组件--摄像机 第 6 课: 用户输入与转义符 第 7 课 : 常用API之Invoke 函数调用 第 7 课 : 基本组件之灯光 第 7 课: 类型转换 与 常量 第 8 课 :常用API 之消息发送 第 8 课 :分支结构之 if 语句 第 8 课:组件与脚本 第 9 课:常用API--协同程序 第 9 课 鼠标键盘输入 第 10 课 : 常用API之脚本生命周期 第 10 课: 使用变换组件移动游戏物体 第 10 课: 循环结构之 for 语句 第 11 课: 循环结构之 while 语句 第 11课 : 常用API之 工具类 第 11 课: 物理组件之刚体 第 12 课: 数组之基本语法 第 12 课:物理射线之原理分析 第 12 课 : 物理组件之碰撞体 第 13 课 : 刚体常用方法介绍 第 13 课 : 数组之元素遍历 第 13 课: 物理射线之打砖块案例 [上] 第 14 课 :物理射线之打砖块案例 [下] 第 14 课:数组之内存结构 第 14 课 :刚体碰撞事件监测与处理 第 15 课:数组之二维数组 第 15 课:刚体触发事件监测与处理 第 16 课: 函数之基本语法 第 16 课:网格组件之网格过滤器和渲染器 第 17 课 : 函数之函数重载 第 18 课 : 函数之高级参数 第 19 课 : 函数之递归调用 第 19 课 : PC 端游戏打包与发布 第 20 课 : C# 语法基础总结 第 20 课 : 新手入门总结 第 17 课 : 疯狂教室案例开发[上] 第 18 课 : 疯狂教室案例开发[下] 第15课 : 飞盘设计案例之案例分析 第16课 : 飞盘设计案例之角色控制 第 17 课 : 飞盘射击案例之飞盘射击 第 18 课 : 飞盘射击案例之 游戏管理器 第 19 课 : 飞盘射击案例之界面逻辑 第 20 课 : 飞盘射击案例之界面逻辑与新手进阶总结

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值