고정 조인트 기능 정보
3996 단어 FixedJointUnity3DC#
Fixed Joint 정보
이번에는 Fixed Joint의 기능을 사용하여 객체끼리를 붙이는 방법을 간단히 설명해 가고 싶습니다.
이번에는 이하의 2개의 오브젝트를 사용해 설명해 가고 싶습니다.
Cube에 이런 스크립트를 붙여 보았습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
private float one = 0.05f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(one, 0, 0);
}
}
그러면
물론 Capsule은 움직이지 않고 Cube만 진행합니다.
거기서 사용하는 것이 고정 조인트입니다.
Fixed Joint의 기능
- Connected Body: 붙이고 싶은 오브젝트를 넣는 장소
- Break Force : 붙인 물체를 놓는 데 필요한 힘
- Break Torque : 붙인 물체를 놓는 데 필요한 토크
- Enable Collision : 체크를 하면 붙인 오브젝트끼리 충돌을 할 수 있다
- Enable Preprocessing : 체크를 하면 불가능한 움직임을 했을 때 안정된 움직임을 취하도록 한다
- Mass Scale: 질량의 크기
- Connected Mass Scale: 붙인 물체의 질량 크기
이번은 Script로 Fixed Joint의 해제를 할 예정이므로, Connected Body에 Capsule을 넣는 것만으로 OK입니다!
주의: 붙이는 객체에는 반드시 RigidBody가 붙어 있는지 확인하십시오.
【물리적인 일을 할 때는 Rigidbody를 붙인다】라는 Unity의 철칙이 있으므로, 이번에도 그 철칙에 따라, 반드시 Rigidbody가 양쪽에 대해서 있는지 확인해 주세요
(연결하고 싶은 Object에 Rigidbody가 붙어 있지 않으면 Fixed Joint의 Connected Body에 넣을 수 없습니다)
Connected Body에 Capsule을 넣고 실행하면. . .
이 상태에서는 Capsule이 끌려가는 바람이므로 Cube의 Rigidbody를 열고 Constraint에서 Freeze Rotationno z에 체크를 넣습니다.
*
Z축의 Rotation을 고정했기 때문에. . .
이것으로 완성입니다!
부기
if 문과 Destroy를 사용하면 쉽게 Component를 해제하거나 추가 할 수 있으므로이 기회에 꼭 Fixed Joint를 사용해보십시오
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
private float one = 0.05f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(one, 0, 0);
if (Input.GetMouseButtonDown(0))
{
FixedJoint component = this.gameObject.GetComponent<FixedJoint>();
Destroy(component);
}
}
}
Reference
이 문제에 관하여(고정 조인트 기능 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kiyo-Lit/items/9ede036d3a49c02f98ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
private float one = 0.05f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(one, 0, 0);
}
}
- Connected Body: 붙이고 싶은 오브젝트를 넣는 장소
- Break Force : 붙인 물체를 놓는 데 필요한 힘
- Break Torque : 붙인 물체를 놓는 데 필요한 토크
- Enable Collision : 체크를 하면 붙인 오브젝트끼리 충돌을 할 수 있다
- Enable Preprocessing : 체크를 하면 불가능한 움직임을 했을 때 안정된 움직임을 취하도록 한다
- Mass Scale: 질량의 크기
- Connected Mass Scale: 붙인 물체의 질량 크기
이번은 Script로 Fixed Joint의 해제를 할 예정이므로, Connected Body에 Capsule을 넣는 것만으로 OK입니다!
주의: 붙이는 객체에는 반드시 RigidBody가 붙어 있는지 확인하십시오.
【물리적인 일을 할 때는 Rigidbody를 붙인다】라는 Unity의 철칙이 있으므로, 이번에도 그 철칙에 따라, 반드시 Rigidbody가 양쪽에 대해서 있는지 확인해 주세요
(연결하고 싶은 Object에 Rigidbody가 붙어 있지 않으면 Fixed Joint의 Connected Body에 넣을 수 없습니다)
Connected Body에 Capsule을 넣고 실행하면. . .
이 상태에서는 Capsule이 끌려가는 바람이므로 Cube의 Rigidbody를 열고 Constraint에서 Freeze Rotationno z에 체크를 넣습니다.
*
Z축의 Rotation을 고정했기 때문에. . .
이것으로 완성입니다!
부기
if 문과 Destroy를 사용하면 쉽게 Component를 해제하거나 추가 할 수 있으므로이 기회에 꼭 Fixed Joint를 사용해보십시오
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
private float one = 0.05f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position += new Vector3(one, 0, 0);
if (Input.GetMouseButtonDown(0))
{
FixedJoint component = this.gameObject.GetComponent<FixedJoint>();
Destroy(component);
}
}
}
Reference
이 문제에 관하여(고정 조인트 기능 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kiyo-Lit/items/9ede036d3a49c02f98ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)