美文网首页
unity关节(joint)讲解

unity关节(joint)讲解

作者: 壹米玖坤 | 来源:发表于2018-03-25 20:41 被阅读0次

关节

关节组件可以添加至多个游戏对象中,而添加关节的游戏对象将通过关节连接在一起并且感觉连带的物理效果。需要注意的是:关节必须依赖于刚体组件。

关节介绍

关节一共分为5大类:链条关节,固定关节,弹簧关节,角色关节和可配置关节。

链条关节(hinge joint):将两个物体以链条的形式绑在一起,当力量大于链条的固定力矩时,两个物体就会产生相互的拉力。

固定关节(fixed joint):将两个物体永远以相对的位置固定在一起,即使发生物理改变,它们之间的相对位置也将不变。

弹簧关节(spring joint):将两个物体以弹簧的形式绑定在一起,挤压它们会得到向外的力,拉伸它们将得到向里的力。

角色关节(character joint):可以模拟角色的骨骼关节。

可配置关节(configurable joint):可以模拟任意关节的效果。

关节是一个游戏组件,在导航菜单栏中选择component——physics然后从中选择一种关节组件,即可完成关节组件的添加。

使用breakforce可设置关节断裂的力,一旦力超过它,关节将会断裂。断裂时,通过onjointbreakforce方法可监听相关事件。

using UnityEngine;

using System.Collections;

public class Script_06_10 : MonoBehaviour

{

    //链接关节游戏对象

    GameObject connectedObj = null;

    //当前链接的关节组件

    Component jointComponent = null;

    void Start()

    { 

        //获得链接关节的游戏对象

        connectedObj = GameObject.Find("Cube1");

    }

    void OnGUI()

    {

        if(GUILayout.Button("添加链条关节"))

        {

            ResetJoint();

            jointComponent = gameObject.AddComponent("HingeJoint");

            HingeJoint hjoint = (HingeJoint)jointComponent;

            connectedObj.rigidbody.useGravity = true;

            hjoint.connectedBody = connectedObj.rigidbody;

        }

        if(GUILayout.Button("添加固定关节"))

        {

            ResetJoint();

            jointComponent =gameObject.AddComponent("FixedJoint");

            FixedJoint fjoint = (FixedJoint)jointComponent;

            connectedObj.rigidbody.useGravity = true;

            fjoint.connectedBody = connectedObj.rigidbody;

        }

        if(GUILayout.Button("添加弹簧关节"))

        {

            ResetJoint();

            jointComponent =gameObject.AddComponent("SpringJoint");

            SpringJoint sjoint = (SpringJoint)jointComponent;

            connectedObj.rigidbody.useGravity = true;

            sjoint.connectedBody = connectedObj.rigidbody;

        }

        if(GUILayout.Button("添加角色关节"))

        {

            ResetJoint();

            jointComponent =gameObject.AddComponent("CharacterJoint");

            CharacterJoint cjoint = (CharacterJoint)jointComponent;

            connectedObj.rigidbody.useGravity = true;

            cjoint.connectedBody = connectedObj.rigidbody;

        }

        if(GUILayout.Button("添加可配置关节"))

        {

            ResetJoint();

            jointComponent =gameObject.AddComponent("ConfigurableJoint");

            ConfigurableJoint cojoint = (ConfigurableJoint)jointComponent;

            connectedObj.rigidbody.useGravity = true;

            cojoint.connectedBody = connectedObj.rigidbody;

        }

    }

    //重置关节

    void ResetJoint(){

        //销毁之前添加的关节组件

        Destroy (jointComponent);

        //重置对象位置

        this.transform.position = new Vector3(821.0f,72.0f,660.0f);

        connectedObj.gameObject.transform.position = new Vector3(805.0f,48.0f,660.0f);

        //不敢应重力

        connectedObj.rigidbody.useGravity = false;

    }

}

点击左边按钮,两个正方体便会下落实现不同的关节效果。主要是上述的代码很值得参考与细读。

相关文章

  • unity关节(joint)讲解

    关节 关节组件可以添加至多个游戏对象中,而添加关节的游戏对象将通过关节连接在一起并且感觉连带的物理效果。需要注意的...

  • Joint

    Unity中可以使用物理关节组件使物体连接起来 1、Hinge Joint-铰链关节 铰链关节由两个游戏对象的刚体...

  • Unity3D物理学模拟(高级)

    物理关节-铰链关键(Joint) 物理关节用于模拟连接两个缸体之间的连接物的物理现象。 在Unity 3D作为组件...

  • 关节组件-Joint

    Unity中可以使用物理关节组件使物体连接起来,如图1.1是给游戏对象添加关节组件的步骤: 也可以在物体的Insp...

  • 肩关节和髋关节

    定义 肩关节和髋关节属于球窝关节(Ball-and-socket joint),球窝关节中关节头是球的一部分,关节...

  • 物理系统

    unity 为用户提供了可靠的物理引擎系统。 RigidbodyConstant ForceHinge Joint...

  • 等渗关节支持配方

    等渗关节支持配方 Prime Joint Support Formula by Isotonix@ 随着年龄的增...

  • Unity入门:快速做一个上瘾的小游戏

    本文转自Unity Connect博主Michael Wang 主要学习的知识点: Joint 2D 组件 Lin...

  • BAO Joint for mac(AE骨骼关节绑定插件)

    BAO Joint for mac是一款AE骨骼关节绑定插件,适用于多个版本的After Effects,BAO ...

  • 通过物理关节joint实现的特效

    motorjoint可以实现阻尼振动运动 弓弦通过 revolutejoint组合形成 例如 弓箭发送后弓弦恢复原...

网友评论

      本文标题:unity关节(joint)讲解

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