2016. 3. 4. 18:20
https://blog.naver.com/nagne2011/220645641861
using UnityEngine;
using System.Collections;
[RequireComponenet typeof(Rigidbody);] //rigidbody를 바로 포함시켜준다
public class capsuleMove : MonoBehaviour {
private Rigidbody rigid;
// Use this for initialization
void Start () {
rigid = GetComponent<Rigidbody>(); //Rigidbody를 리턴해준다;
}
// Update is called once per frame
void Update () {
Debug.Log("update");
}
void FixedUpdate()
{
Debug.Log("Fixedupdate"); //물리 업덷이트 갱신은 fame단위가 아니기 때문에 fixedupdate에서 갱신해줘야한다
if (Input.GetButtonDown ("Jump"))
{
Debug.Log("space");
//rigid.AddForce(0,100,0); //world좌표 기준
rigid.AddRelativeForce(0,100,0); //자기 local좌표 기준
}
}
//충돌 함수
void OnCollisionEnter(Collision collision)
{//충돌된 직후 발동
//collision.gameObject = 충돌한 물체
Debug.Log(collision.gameObject); //부딪힌 대상
foreach (ContactPoint contact in collision.contacts) { //부딪힌 위치
Debug.Log("ContactPoint :" + contact.point); //부딪힌 지점
Debug.Log("ContactNormal :" + contact.normal); //부딪힌 것에 대한 nomal값
}
}
void OnCollisionStay(Collision collision)
{//지속되고 있는동안 계속
}
void OnCollisionExit(Collision collision)
{//충돌이 끝난 순간
}
}
1. AXIS이용하기
Edit -> Project Settings -> Input
에서 확인 가능하다
if (Input.GetButtonDown ("Jump"))
이런 식으로 GetButton을 사용후 Axis에서 해당 키의 "이름"을 입력하면 됨
2. Rigidbody
-모든 물리속성을 담당.
리지드바디가 있어야 '물리적인 작용을 한다고 인식함
.
mass 질량, 물체끼리 부딪혔을때 상호작용조절
drag 마찰
angular drag 회전마찰력
use Gravity 중력적용
in kinematic
물리작용을 스크립트로만 받음
{
회전하는 큐브는 외부의 힘에 반응하지 않는다는 선언을 한 상태(Is Kinematic)이므로 충돌에는 물리엔진이 충돌반응을 계산하지 않지만 외부에서 강체가 충돌한 경우에는 OnCollisionEnter 함수는 호출된다. 충돌해오는 작은 큐브가 강체가 아니기 때문에 충돌탐지가 안되는 것이며 작은 큐브에 Rigidbody 콤포넌트를 추가하면 OnCollisionEnter 함수가 호출된다. 또 회전하는 큐브가 강체로 선언된 경우에는 Is Kinematic 을 설정한 상태에서도 외부의 다른 오브젝트들에게는 일반적인 강체 오브젝트로 간주되므로 Rigidbody 콤포넌트를 추가한 경우와 추가하지 않은 경우에는 분명한 차이가 있다
특정 오브젝트가 외부의 힘에 물리적 반응을 보일 필요가 없다면 그 오브젝트에 Rigidbody 콤포넌트를 설정할 필요는 없지만 Rigidbody 를 설정하지 않으면 다른 제2의 오브젝트가 충돌할 때 제2의 오브젝트 입장에서는 Rigidbody 를 설정하지 않은 오브젝트와의 충돌을 탐지할 수 없는 것이다.
}
interpolate 물리작용시, 반응속도가 빠른지 느린지
collision detction 충돌 체크를 얼마나 상세하게 체크하느냐
constraints
Freeze position/rotation xyz에 대한 동결
3. 충돌체크
업뎃을 갱신하는 시간은 frame단위가 아니라,
Edit -> Project Settings -> physics의
sleep threshold에서 확인 가능하다
4. 물리 고유의 재질
asset -> 우클릭 -> physicMaterial
friction : 마찰력
bounciness : 탄성(0~1)
'유니티' 카테고리의 다른 글
유니티 Character Controller (0) | 2022.02.13 |
---|---|
유니티 2D 스프라이트 활용 (0) | 2022.02.13 |
유니티 튜토리얼 - TANKS! - 2 (0) | 2022.02.13 |
유니티 튜토리얼 - TANKS! - 1 (0) | 2022.02.13 |
유니티 Ray (0) | 2022.02.13 |