您的位置:首页 > 其它

角色控制器 影响忽略 射线

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  U3D