角色控制器 影响忽略 射线
2014-12-26 18:08
183 查看
欢迎来到U3D社区:
今天我们主要学习了角色控制器 影响忽略 射线
角色控制器:
Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件。
使用时需要先给物体添加一个CharacterController(角色控制器)
private CharacterController controller; (角色控制对象)
如果角色移动的速度过慢。则需要给他添加一个速度 需要定义Speed
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);
}
这个的代码比较繁多 还有一种比较简单的代码:利用垂直z和水平x
controller.SimpleMove(new Vector3(Input.GetAxis("Horizontal")*moveSpeed,0,Input.GetAxis("Vertical")*moveSpeed));
如果看不清楚也可以将他分开来写
float x=Input GetAxis("horizontal")
filat z= Input GetAxis("Vectrical")
controller.SimpleMove(new Vector3(x,0,z));
移动与飞行
if (Input.GetKeyDown(KeyCode.W))
{
Vector3 forward=transform.TransformDirection(Vector3.forward);
controller.Move(forward*moveSpeed);
忽略碰撞
想游戏中人物与人物总是可以互相穿过不发生碰撞这就用到了忽略碰撞:
public Transform ball;
void Start()
{
Physics.IgnoreCollision(ball.collider, this.collider);
}
射线:
射线用简单的话来讲就是在射击类游戏中判断他是否打中了目标:
射线有两个元素 一个是射线的起始点(Ray.orgin)还有一个是射线的方向(Ray.direction)
创建一条射线的方法Ray (origin : Vector3, direction : Vector3)
今天老师带着做了一个 种豆子的一个小游戏 里边用的就是射线
他的整体代码是 :
public class beans : MonoBehaviour
{
public GameObject bean; //先定义一个Bean
void Update ()
{
if (Input.GetMouseButtonDown(0)){ //获取鼠标控制
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定义一条射线
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000)) 射线的距离 如果射线发生碰撞
{
GameObject go = Instantiate(bean, hit.point, transform.rotation) as GameObject; //实例化物体 并且克隆出来
}
}
}
}
更多精彩在http://unity.gopedu.com/forum.php
今天我们主要学习了角色控制器 影响忽略 射线
角色控制器:
Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件。
使用时需要先给物体添加一个CharacterController(角色控制器)
private CharacterController controller; (角色控制对象)
如果角色移动的速度过慢。则需要给他添加一个速度 需要定义Speed
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);
}
这个的代码比较繁多 还有一种比较简单的代码:利用垂直z和水平x
controller.SimpleMove(new Vector3(Input.GetAxis("Horizontal")*moveSpeed,0,Input.GetAxis("Vertical")*moveSpeed));
如果看不清楚也可以将他分开来写
float x=Input GetAxis("horizontal")
filat z= Input GetAxis("Vectrical")
controller.SimpleMove(new Vector3(x,0,z));
移动与飞行
if (Input.GetKeyDown(KeyCode.W))
{
Vector3 forward=transform.TransformDirection(Vector3.forward);
controller.Move(forward*moveSpeed);
忽略碰撞
想游戏中人物与人物总是可以互相穿过不发生碰撞这就用到了忽略碰撞:
public Transform ball;
void Start()
{
Physics.IgnoreCollision(ball.collider, this.collider);
}
射线:
射线用简单的话来讲就是在射击类游戏中判断他是否打中了目标:
射线有两个元素 一个是射线的起始点(Ray.orgin)还有一个是射线的方向(Ray.direction)
创建一条射线的方法Ray (origin : Vector3, direction : Vector3)
今天老师带着做了一个 种豆子的一个小游戏 里边用的就是射线
他的整体代码是 :
public class beans : MonoBehaviour
{
public GameObject bean; //先定义一个Bean
void Update ()
{
if (Input.GetMouseButtonDown(0)){ //获取鼠标控制
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定义一条射线
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000)) 射线的距离 如果射线发生碰撞
{
GameObject go = Instantiate(bean, hit.point, transform.rotation) as GameObject; //实例化物体 并且克隆出来
}
}
}
}
更多精彩在http://unity.gopedu.com/forum.php
相关文章推荐
- u3d学习之忽略碰撞、射线、角色控制器
- unity——使用角色控制器组件+射线移动
- unity之角色控制器和射线
- Unity射线,角色控制器
- unity学习之射线、角色控制器
- 射线和角色控制器
- unity3d--角色控制器和射线
- Shiro,多个角色调用控制器里面方法
- character controller角色控制器
- Unity3D 第三人称角色控制器结合easytouch
- Unity手游之路<七>角色控制器
- Unity手游之路<七>角色控制器
- 【截图整理官方教程】unity 2D角色控制器 2D Character Controller
- CharacterController 角色控制器实现移动和跳跃
- iOS 启动图片会影响控制器的启动大小
- [原]Unity3D深入浅出 - 角色控制器(Character Controller)
- Unity3D 角色控制器(Character Controller)Move、SimpleMove的区别
- CharacterController(角色控制器)
- 写一个角色控制器,鼠标控制屏幕晃动,鼠标控制开枪。
- Unity手游之路<七>角色控制器