美文网首页
Unity 获取轴,刚体,爆炸效果,Ray(射线)

Unity 获取轴,刚体,爆炸效果,Ray(射线)

作者: Unity学习的路上 | 来源:发表于2016-12-27 13:59 被阅读0次

    Input.GetAxis 获取轴

    方法描述;根据axisName名称返回虚拟输入轴中的值。

    float ver = Input.GetAxis("Vertical")*speed;//获取X轴,默认情况下他们关联到方向键上,值在-1到1之间

    float hor = Input.GetAxis("Horizontal")*rotationSpeed;//获取Y轴

    transform.Translate(new Vector3(hor, 0, ver) * Time.deltaTime * 3);    //移动


    Rigidbody 刚体

    通过物理模拟控制一个物体的位置。

    添加Rigidbody组件到一个对象,这就置于了Unity的物理引擎下使其运动。即使没有添加任何代码,刚体对象也将在重力的影响下下落,如果带有碰撞器的对象与之碰撞,并将做出反应。

    从脚本添加力到刚体对象上,以真实的物理方法来控制它。例如,轿车的行为可以给轮胎施加力,物理引擎处理运动的其他方面,因此,会有更真实的加速度和正确的碰撞反应。

    drag 刚体的阻力。 

    position 该刚体的位置。

    rotation 刚体的旋转角度。

    useGravity 控制重力是否影响整个刚体。

    isKinematic 控制物理是否够影响这个刚体。


    AddExplosionForce应用一个力到刚体来模拟爆炸效果。

    这个方法有四个参数.并且爆炸效果的物体要是刚体.

    explosionForce

    爆炸力,可以通过距离来修改

    explosionPosition

    爆炸中心

    explosionRadius

    爆炸的半径,在半径内才有爆炸效果。

    upwardsModifier

    调节爆炸出现的位置,使其看起来像掀起对象。

    mode

    用于应用到目标力的方式。

    运用这个方法需要获取到多个碰撞体

    以下这个方法能够获取到在一个中心点内,一个半径内的所有碰撞体

    public static Collider[] OverlapSphere(Vector3 position, float radius);

    返回值是一个Collider类型的数组.

    然后需要遍历这个数组,再判断每一个元素是否是刚体,如果是,就给一个爆炸的效果

    void OnCollisionEnter(Collision collision)   

     {       

     if (collision.gameObject.name == "Exp")        //Exp是一个空物体当碰到这个空物体是爆炸

    {           

     Vector3 pos = transform.position;            //获取当前对象的位置

    Collider[] collider = Physics.OverlapSphere(pos, 10);         //返回以该对象为中心 10为半径的圆内所有碰撞体   

    Debug.Log(collider.Length);            //打印获取到了多少个碰撞体

    foreach (Collider item in collider)           //遍历数组

     {                       

    if (item.GetComponent<Rigidbody>())             //判断该对象是否是刚体

     {                    

    item.GetComponent<Rigidbody>().AddExplosionForce(_force, pos, 10, 10F);//给物体添加爆炸效果

    }

    }

    }

    }



    Ray(射线)

    Ray是具有开始点和方向的无穷线。

    direction

    射线的方向。

    origin

    射线的原点。

    GetPoint

    返回射线上指定距离的点。

    if (Input.GetMouseButtonDown(0))//当按下鼠标左键时

    {

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//创建一条射线,从相机射出一条射线方向是鼠标的位置

    RaycastHit hit; //用于保存射线的信息

    if (Physics.Raycast(ray, out hit))//判断射线是否射在碰撞体上

    {

    GameObject a1 = Instantiate(a) as GameObject; //添加预设体

    a1.transform.position = hit.point;//将预设体的位置设置为射线与碰撞体的焦点

    }

    }

    相关文章

      网友评论

          本文标题:Unity 获取轴,刚体,爆炸效果,Ray(射线)

          本文链接:https://www.haomeiwen.com/subject/toksvttx.html