unity学习之角色控制器
2014-12-19 22:39
567 查看
欢迎来到unity学习、unity培训
这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌
角色控制器
定义:第三人称或第一人称游戏主角控制使用角色控制器,而不用刚体物理效果。使用角色控制器可以实现非常好的控制效果。
手动添加角色控制器:给游戏对象添加角色控制器,在选中对象后使用菜单Component→Physics→Character Controller
第一人称:
第一人称好比整个游戏中主角的眼睛,游戏中的画面一切好像自己眼睛中看到的一样。第一人称视角的控制原理是控制Scene视图中摄像机对象的移动,所以显示的永远都是主角的正前方,比如CS就是第一人称视角的游戏
第二人称:
在游戏中包括主角对象和摄像机对象,主角移动后,摄像机永远在跟着主角在运动,所以在Game视图中可以看到主角的运动,第三人称可以更为清晰的显示玩家在控制人物角色的效果
角色控制器属性:
脚本添加角色控制器:
代码:
//角色控制器对象
private CharacterController controller=null;
private float moveSpeed=30.0f;//角色移动的速度
void Start () {
//获取角色控制器对象
controller = GetComponent<CharacterController>();
}
void Update{
if (Input.GetKeyDown(KeyCode.W)) {
controller.SimpleMove(Vector3.forward*moveSpeed);
}
if (Input.GetKeyDown(KeyCode.S)) {
controller.SimpleMove(Vector3.forward*-moveSpeed);
}
if (Input.GetKeyDown(KeyCode.A)) {
controller.SimpleMove(Vector3.right*-moveSpeed);
}
if (Input.GetKeyDown(KeyCode.D)) {
controller.SimpleMove(Vector3.right*moveSpeed);
}
移动与飞行效果:
原理:
角色控制器组件可以实现飞行与降落的功能,这可以通过Move()方法来实现,其中该方法的参数为飞行的角度。与SimpleMove()方法只适合用于平面中的移动(也就是x轴与z轴的移动)不同,Move()方法使用于所有方向的移动,所以它可以实现游戏对象任意角度的飞行与移动效果。
代码:
if (Input.GetKeyDown(KeyCode.W)) {
Vector3 forward=transform.TransformDirection(Vector3.forward);
controller.Move(forward*moveSpeed);
}
if (Input.GetKeyDown(KeyCode.S)) {
Vector3 back=transform.TransformDirection(Vector3.forward);
controller.Move(back*-moveSpeed);
}
这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌
角色控制器
定义:第三人称或第一人称游戏主角控制使用角色控制器,而不用刚体物理效果。使用角色控制器可以实现非常好的控制效果。
手动添加角色控制器:给游戏对象添加角色控制器,在选中对象后使用菜单Component→Physics→Character Controller
第一人称:
第一人称好比整个游戏中主角的眼睛,游戏中的画面一切好像自己眼睛中看到的一样。第一人称视角的控制原理是控制Scene视图中摄像机对象的移动,所以显示的永远都是主角的正前方,比如CS就是第一人称视角的游戏
第二人称:
在游戏中包括主角对象和摄像机对象,主角移动后,摄像机永远在跟着主角在运动,所以在Game视图中可以看到主角的运动,第三人称可以更为清晰的显示玩家在控制人物角色的效果
角色控制器属性:
属 性 | 说 明 |
Slope Limit | 坡度限制,角色控制器只能爬小于等于该值的斜坡 |
Step Offset | 台阶高度,角色可以迈上的最大台阶高度 |
Skin width | 皮肤厚度,皮肤厚度决定了两个碰撞器可以互 相渗入的深度。较大的皮肤厚值度会导致颤抖, 小的皮肤厚度值会导致角色被卡住。一个合理的 设定是使该值等于半径(Radius)的10% |
Min Move Distance | 最小移动距离,如果角色移动的距离小于该值, 那角色就不会移动。这可以避免颤抖现象。 大部分情况下该值被设为0 |
Center | 中心,该值决定角色控制器在世界空间中的 位置,并不影响角色的行动 |
Radius | 半径,角色控制器胶囊半径 |
Height | 高度,角色控制器胶囊高度 |
代码:
//角色控制器对象
private CharacterController controller=null;
private float moveSpeed=30.0f;//角色移动的速度
void Start () {
//获取角色控制器对象
controller = GetComponent<CharacterController>();
}
void Update{
if (Input.GetKeyDown(KeyCode.W)) {
controller.SimpleMove(Vector3.forward*moveSpeed);
}
if (Input.GetKeyDown(KeyCode.S)) {
controller.SimpleMove(Vector3.forward*-moveSpeed);
}
if (Input.GetKeyDown(KeyCode.A)) {
controller.SimpleMove(Vector3.right*-moveSpeed);
}
if (Input.GetKeyDown(KeyCode.D)) {
controller.SimpleMove(Vector3.right*moveSpeed);
}
移动与飞行效果:
原理:
角色控制器组件可以实现飞行与降落的功能,这可以通过Move()方法来实现,其中该方法的参数为飞行的角度。与SimpleMove()方法只适合用于平面中的移动(也就是x轴与z轴的移动)不同,Move()方法使用于所有方向的移动,所以它可以实现游戏对象任意角度的飞行与移动效果。
代码:
if (Input.GetKeyDown(KeyCode.W)) {
Vector3 forward=transform.TransformDirection(Vector3.forward);
controller.Move(forward*moveSpeed);
}
if (Input.GetKeyDown(KeyCode.S)) {
Vector3 back=transform.TransformDirection(Vector3.forward);
controller.Move(back*-moveSpeed);
}
相关文章推荐
- 【Unity 3D】学习笔记三十八:角色控制器
- 【Unity 3D】学习笔记三十八:角色控制器
- unity官方demo学习之Stealth(九)角色动画控制器
- unity学习之射线、角色控制器
- 【Unity】4.4 添加角色控制器
- Unity角色控制器
- 【Unity快速实现小功能】动画系统学习小技巧篇(二)——摄像机跟随角色移动
- unity 角色控制器
- unity之角色控制器和射线
- 【unity学习笔记】手机RPG游戏中角色移动方式实现
- unity官方demo学习之Stealth(十一)角色移动
- unity官方demo学习之Stealth(十二)角色生命值
- Unity学习(1)——角色移动
- Unity3D学习之 ------------------------ "Hello Unity"控制角色移动
- unity学习手记之控制角色移动
- unity学习手记之角色动画
- 【Unity】第11章 第三人称角色控制器和碰撞体
- u3d学习之忽略碰撞、射线、角色控制器
- unity官方demo学习之Stealth(五)游戏控制器
- Unity角色控制器