유니티 사각 투영의 물리 실험(3/3)구의 사각 투영
계기
유니티에서 물리 시뮬레이션을 할 수 있다는 걸 알고 도전해보기로 했어요.
실험할 때도 유니티의 기본적인 상황을 접했어요.
했던 일을 잊어버릴 것 같아서 필기를 남기기 위해 투고하다
환경
Unity 2019.1.10f1 (64-bit)
웹 페이지 정보
이 사이트의 설명은 매우 자세해서 이해하기 쉽다
https://ekulabo.com/tutorial-input
단계(개요)
원래는 유니티 문외한이라 단계적으로 시도했다
1. Unity 시작 ※ 이미
2. 공이 자연스럽게 떨어지는 물리 실험 ※ 완료
3. 구체가 튕기는 물리 실험 ※ 완료
4. 공의 사각 투영의 물리 실험 ← 이마코코
4. 구체가 비스듬히 투사하는 물리 실험
설정 결정이 힘들어서 참고 사이트는 이렇게 끝났습니다.
변경된 곳만 기재하다.다음은 기본값입니다.
일단 메인 카메라.
Position:15, 4, -20
Sphere
position:20, 0.5, 0
Plane
position:35, 0, 0
Scale:4, 1, 1
여기서부터 본론입니다.
자연 낙하와 반사 (소개되지 않았지만 마찰 등) 기존 구성 요소를 준비했습니다.
사방 투영을 위해 각도가 얼마나 되는지 결정하는 강도는 어떻게 힘을 줍니까?에 관하여
Unity가 API를 준비했기 때문에 구성 요소를 자체 제작한 것 같습니다.
드디어... 비프로그래밍으로 제작된 유니티의 대단함에 깜짝 놀랐어요.
그렇다면 만드는 방법은... 사이트를 참고하는 순서라면 미묘하게 잘 안되기 때문에 나름대로의 스타일이 있다.
스프레드시트 선택 > 구성 요소 추가 > 새 스크립트
Script 이름을 결정합니다.이름은 "Sphere Booster"입니다.
...VBcode를 동시에 시작합니다.
미리 틀을 준비했어요...얼마나 부드러운지...
보충하다
void Start () 는 재생 단추를 눌렀을 때 실행되는 함수입니다.
void 업데이트 () 는 일부 작업을 수행할 때 실행되는 함수입니다.
void Start () 에 다음 코드를 기입하십시오.
재생 버튼을 누르는 동시에 X축에서 45도 방향으로 공을 날리려고 한다. void Start () {
// 力を加える向きをVector3型で定義
// 今回はX軸から45度の向きに射出するため、XとYを1:1にする
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 上の向きに加わる力の大きさを定義
float forceMagnitude = 10.0f;
// 向きと大きさからSphereに加わる力を計算する
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
// ForceMode.Impulseは撃力
rb.AddForce(force, ForceMode.Impulse);
}
매번 소개할 수는 없지만 재생 버튼을 누르면 확실히 날아간다.그리고 플레인에 착륙해서 이렇게 네락으로 굴러가서...
이어서 한층 더 개조하다.이번에 클릭해서 날아가서...
클릭하면 어떤 동작을 할 수 있습니까?
편집: SphereBooster>Open C#Project 마우스 오른쪽 버튼으로 클릭
이번 편집은 () 업데이트됩니다.
if (Input.GetKeyUp(KeyCode.Space)){}
이벤트를 시작할 수 있습니까...홀가분하네.
이번 설치는 스페이스 바를 누르면 로그를 토할 것으로 예상된다. void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// Debug.LogでUnityのコンソールに出力できる
Debug.Log("スペースキーが押されたよ。");
}
눈치채면
Sphere Inspector에 Sphere Booster 란이 나타납니다.
그렇군요. 이렇게 나왔군요.
그림을 남기지는 않았지만 재생 버튼을 누르면
언뜻 보니 아까와 같이 사방으로 투영되었다
스페이스 바를 누를 때마다 스크린 콘솔에 스페이스 바를 눌렀습니다.나타나다.
여기서부터...왜 그림은 남기지 않고 소스만 남겼는지 모르겠다.
Start () 의 사각 투영 코드를 방금 눌렀을 때 if 문장에 삽입하는 것은↓↓
해보니 공간이 밀릴 때마다 사방으로 투사되는 느낌이 든다.
그렇군요. 누를 때마다 날아다니기 때문에 2단 점프 3단처럼 느껴집니다.
'''
public class SphereBooster : MonoBehaviour {// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// ボールを飛ばす処理をStart()からここに移動させる
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
rb.AddForce(force, ForceMode.Impulse);
}
}
}
'''
...그럼 참고 사이트에서 이 스크립트는 아직도 문제가 많은 것 같습니다. 최종적으로 모두 수정된 코드가 바로 이것입니다.public class SphereBooster : MonoBehaviour {
// 飛行中フラグ
bool isFlying = false;
// ボタン押下フラグ
bool isBoostPressed = false;
// Sphereオブジェクトの初期位置格納用ベクトル
Vector3 initPosition = Vector3.zero;
void Start(){
initPosition = gameObject.transform.position;
}
void Update(){
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
if (Input.GetKeyUp(KeyCode.Space)){
isBoostPressed = true;
}
}
void FixedUpdate(){
if (isBoostPressed){
if (isFlying){
// 飛行中の処理
// 運動の停止
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
// 初期位置に移動させる
gameObject.transform.position = initPosition;
} else {
// ボールを飛ばす処理
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// 力を加えるメソッド
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.AddForce(force, ForceMode.Impulse);
}
// 飛行中フラグの切り替え
isFlying = !isFlying;
// どちらの処理をしてもボタン押下フラグをfalseに
isBoostPressed = false;
}
}
}
한번 해 보니 확실히 처리하기 쉬워졌다.
공백을 누른 후 사각형으로 투영하고, 다시 공백을 누른 후 공은 초기 위치로 돌아가고, 다시 사각형으로 투영한다.
아주 잘했어, 물리 시뮬레이션...
끝내다
API를 제대로 조사하지 않았기 때문에 C#을 처음 접하는 경우
거의 다 경을 쓰는 기분으로 만든 것도 있지만.
상당히 수월하게 하다.쉬워요!
~ 끝~
Reference
이 문제에 관하여(유니티 사각 투영의 물리 실험(3/3)구의 사각 투영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watyanabe164/items/030fa010d75ab44492ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Unity 2019.1.10f1 (64-bit)
웹 페이지 정보
이 사이트의 설명은 매우 자세해서 이해하기 쉽다
https://ekulabo.com/tutorial-input
단계(개요)
원래는 유니티 문외한이라 단계적으로 시도했다
1. Unity 시작 ※ 이미
2. 공이 자연스럽게 떨어지는 물리 실험 ※ 완료
3. 구체가 튕기는 물리 실험 ※ 완료
4. 공의 사각 투영의 물리 실험 ← 이마코코
4. 구체가 비스듬히 투사하는 물리 실험
설정 결정이 힘들어서 참고 사이트는 이렇게 끝났습니다.
변경된 곳만 기재하다.다음은 기본값입니다.
일단 메인 카메라.
Position:15, 4, -20
Sphere
position:20, 0.5, 0
Plane
position:35, 0, 0
Scale:4, 1, 1
여기서부터 본론입니다.
자연 낙하와 반사 (소개되지 않았지만 마찰 등) 기존 구성 요소를 준비했습니다.
사방 투영을 위해 각도가 얼마나 되는지 결정하는 강도는 어떻게 힘을 줍니까?에 관하여
Unity가 API를 준비했기 때문에 구성 요소를 자체 제작한 것 같습니다.
드디어... 비프로그래밍으로 제작된 유니티의 대단함에 깜짝 놀랐어요.
그렇다면 만드는 방법은... 사이트를 참고하는 순서라면 미묘하게 잘 안되기 때문에 나름대로의 스타일이 있다.
스프레드시트 선택 > 구성 요소 추가 > 새 스크립트
Script 이름을 결정합니다.이름은 "Sphere Booster"입니다.
...VBcode를 동시에 시작합니다.
미리 틀을 준비했어요...얼마나 부드러운지...
보충하다
void Start () 는 재생 단추를 눌렀을 때 실행되는 함수입니다.
void 업데이트 () 는 일부 작업을 수행할 때 실행되는 함수입니다.
void Start () 에 다음 코드를 기입하십시오.
재생 버튼을 누르는 동시에 X축에서 45도 방향으로 공을 날리려고 한다. void Start () {
// 力を加える向きをVector3型で定義
// 今回はX軸から45度の向きに射出するため、XとYを1:1にする
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 上の向きに加わる力の大きさを定義
float forceMagnitude = 10.0f;
// 向きと大きさからSphereに加わる力を計算する
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
// ForceMode.Impulseは撃力
rb.AddForce(force, ForceMode.Impulse);
}
매번 소개할 수는 없지만 재생 버튼을 누르면 확실히 날아간다.그리고 플레인에 착륙해서 이렇게 네락으로 굴러가서...
이어서 한층 더 개조하다.이번에 클릭해서 날아가서...
클릭하면 어떤 동작을 할 수 있습니까?
편집: SphereBooster>Open C#Project 마우스 오른쪽 버튼으로 클릭
이번 편집은 () 업데이트됩니다.
if (Input.GetKeyUp(KeyCode.Space)){}
이벤트를 시작할 수 있습니까...홀가분하네.
이번 설치는 스페이스 바를 누르면 로그를 토할 것으로 예상된다. void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// Debug.LogでUnityのコンソールに出力できる
Debug.Log("スペースキーが押されたよ。");
}
눈치채면
Sphere Inspector에 Sphere Booster 란이 나타납니다.
그렇군요. 이렇게 나왔군요.
그림을 남기지는 않았지만 재생 버튼을 누르면
언뜻 보니 아까와 같이 사방으로 투영되었다
스페이스 바를 누를 때마다 스크린 콘솔에 스페이스 바를 눌렀습니다.나타나다.
여기서부터...왜 그림은 남기지 않고 소스만 남겼는지 모르겠다.
Start () 의 사각 투영 코드를 방금 눌렀을 때 if 문장에 삽입하는 것은↓↓
해보니 공간이 밀릴 때마다 사방으로 투사되는 느낌이 든다.
그렇군요. 누를 때마다 날아다니기 때문에 2단 점프 3단처럼 느껴집니다.
'''
public class SphereBooster : MonoBehaviour {// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// ボールを飛ばす処理をStart()からここに移動させる
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
rb.AddForce(force, ForceMode.Impulse);
}
}
}
'''
...그럼 참고 사이트에서 이 스크립트는 아직도 문제가 많은 것 같습니다. 최종적으로 모두 수정된 코드가 바로 이것입니다.public class SphereBooster : MonoBehaviour {
// 飛行中フラグ
bool isFlying = false;
// ボタン押下フラグ
bool isBoostPressed = false;
// Sphereオブジェクトの初期位置格納用ベクトル
Vector3 initPosition = Vector3.zero;
void Start(){
initPosition = gameObject.transform.position;
}
void Update(){
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
if (Input.GetKeyUp(KeyCode.Space)){
isBoostPressed = true;
}
}
void FixedUpdate(){
if (isBoostPressed){
if (isFlying){
// 飛行中の処理
// 運動の停止
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
// 初期位置に移動させる
gameObject.transform.position = initPosition;
} else {
// ボールを飛ばす処理
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// 力を加えるメソッド
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.AddForce(force, ForceMode.Impulse);
}
// 飛行中フラグの切り替え
isFlying = !isFlying;
// どちらの処理をしてもボタン押下フラグをfalseに
isBoostPressed = false;
}
}
}
한번 해 보니 확실히 처리하기 쉬워졌다.
공백을 누른 후 사각형으로 투영하고, 다시 공백을 누른 후 공은 초기 위치로 돌아가고, 다시 사각형으로 투영한다.
아주 잘했어, 물리 시뮬레이션...
끝내다
API를 제대로 조사하지 않았기 때문에 C#을 처음 접하는 경우
거의 다 경을 쓰는 기분으로 만든 것도 있지만.
상당히 수월하게 하다.쉬워요!
~ 끝~
Reference
이 문제에 관하여(유니티 사각 투영의 물리 실험(3/3)구의 사각 투영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watyanabe164/items/030fa010d75ab44492ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
원래는 유니티 문외한이라 단계적으로 시도했다
1. Unity 시작 ※ 이미
2. 공이 자연스럽게 떨어지는 물리 실험 ※ 완료
3. 구체가 튕기는 물리 실험 ※ 완료
4. 공의 사각 투영의 물리 실험 ← 이마코코
4. 구체가 비스듬히 투사하는 물리 실험
설정 결정이 힘들어서 참고 사이트는 이렇게 끝났습니다.
변경된 곳만 기재하다.다음은 기본값입니다.
일단 메인 카메라.
Position:15, 4, -20
Sphere
position:20, 0.5, 0
Plane
position:35, 0, 0
Scale:4, 1, 1
여기서부터 본론입니다.
자연 낙하와 반사 (소개되지 않았지만 마찰 등) 기존 구성 요소를 준비했습니다.
사방 투영을 위해 각도가 얼마나 되는지 결정하는 강도는 어떻게 힘을 줍니까?에 관하여
Unity가 API를 준비했기 때문에 구성 요소를 자체 제작한 것 같습니다.
드디어... 비프로그래밍으로 제작된 유니티의 대단함에 깜짝 놀랐어요.
그렇다면 만드는 방법은... 사이트를 참고하는 순서라면 미묘하게 잘 안되기 때문에 나름대로의 스타일이 있다.
스프레드시트 선택 > 구성 요소 추가 > 새 스크립트
Script 이름을 결정합니다.이름은 "Sphere Booster"입니다.
...VBcode를 동시에 시작합니다.
미리 틀을 준비했어요...얼마나 부드러운지...
보충하다
void Start () 는 재생 단추를 눌렀을 때 실행되는 함수입니다.
void 업데이트 () 는 일부 작업을 수행할 때 실행되는 함수입니다.
void Start () 에 다음 코드를 기입하십시오.
재생 버튼을 누르는 동시에 X축에서 45도 방향으로 공을 날리려고 한다. void Start () {
// 力を加える向きをVector3型で定義
// 今回はX軸から45度の向きに射出するため、XとYを1:1にする
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 上の向きに加わる力の大きさを定義
float forceMagnitude = 10.0f;
// 向きと大きさからSphereに加わる力を計算する
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
// ForceMode.Impulseは撃力
rb.AddForce(force, ForceMode.Impulse);
}
매번 소개할 수는 없지만 재생 버튼을 누르면 확실히 날아간다.그리고 플레인에 착륙해서 이렇게 네락으로 굴러가서...
이어서 한층 더 개조하다.이번에 클릭해서 날아가서...
클릭하면 어떤 동작을 할 수 있습니까?
편집: SphereBooster>Open C#Project 마우스 오른쪽 버튼으로 클릭
이번 편집은 () 업데이트됩니다.
if (Input.GetKeyUp(KeyCode.Space)){}
이벤트를 시작할 수 있습니까...홀가분하네.
이번 설치는 스페이스 바를 누르면 로그를 토할 것으로 예상된다. void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// Debug.LogでUnityのコンソールに出力できる
Debug.Log("スペースキーが押されたよ。");
}
눈치채면
Sphere Inspector에 Sphere Booster 란이 나타납니다.
그렇군요. 이렇게 나왔군요.
그림을 남기지는 않았지만 재생 버튼을 누르면
언뜻 보니 아까와 같이 사방으로 투영되었다
스페이스 바를 누를 때마다 스크린 콘솔에 스페이스 바를 눌렀습니다.나타나다.
여기서부터...왜 그림은 남기지 않고 소스만 남겼는지 모르겠다.
Start () 의 사각 투영 코드를 방금 눌렀을 때 if 문장에 삽입하는 것은↓↓
해보니 공간이 밀릴 때마다 사방으로 투사되는 느낌이 든다.
그렇군요. 누를 때마다 날아다니기 때문에 2단 점프 3단처럼 느껴집니다.
'''
public class SphereBooster : MonoBehaviour {// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// ボールを飛ばす処理をStart()からここに移動させる
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
rb.AddForce(force, ForceMode.Impulse);
}
}
}
'''
...그럼 참고 사이트에서 이 스크립트는 아직도 문제가 많은 것 같습니다. 최종적으로 모두 수정된 코드가 바로 이것입니다.public class SphereBooster : MonoBehaviour {
// 飛行中フラグ
bool isFlying = false;
// ボタン押下フラグ
bool isBoostPressed = false;
// Sphereオブジェクトの初期位置格納用ベクトル
Vector3 initPosition = Vector3.zero;
void Start(){
initPosition = gameObject.transform.position;
}
void Update(){
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
if (Input.GetKeyUp(KeyCode.Space)){
isBoostPressed = true;
}
}
void FixedUpdate(){
if (isBoostPressed){
if (isFlying){
// 飛行中の処理
// 運動の停止
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
// 初期位置に移動させる
gameObject.transform.position = initPosition;
} else {
// ボールを飛ばす処理
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// 力を加えるメソッド
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.AddForce(force, ForceMode.Impulse);
}
// 飛行中フラグの切り替え
isFlying = !isFlying;
// どちらの処理をしてもボタン押下フラグをfalseに
isBoostPressed = false;
}
}
}
한번 해 보니 확실히 처리하기 쉬워졌다.
공백을 누른 후 사각형으로 투영하고, 다시 공백을 누른 후 공은 초기 위치로 돌아가고, 다시 사각형으로 투영한다.
아주 잘했어, 물리 시뮬레이션...
끝내다
API를 제대로 조사하지 않았기 때문에 C#을 처음 접하는 경우
거의 다 경을 쓰는 기분으로 만든 것도 있지만.
상당히 수월하게 하다.쉬워요!
~ 끝~
Reference
이 문제에 관하여(유니티 사각 투영의 물리 실험(3/3)구의 사각 투영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watyanabe164/items/030fa010d75ab44492ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자연 낙하와 반사 (소개되지 않았지만 마찰 등) 기존 구성 요소를 준비했습니다.
사방 투영을 위해 각도가 얼마나 되는지 결정하는 강도는 어떻게 힘을 줍니까?에 관하여
Unity가 API를 준비했기 때문에 구성 요소를 자체 제작한 것 같습니다.
드디어... 비프로그래밍으로 제작된 유니티의 대단함에 깜짝 놀랐어요.
그렇다면 만드는 방법은... 사이트를 참고하는 순서라면 미묘하게 잘 안되기 때문에 나름대로의 스타일이 있다.
스프레드시트 선택 > 구성 요소 추가 > 새 스크립트
Script 이름을 결정합니다.이름은 "Sphere Booster"입니다.
...VBcode를 동시에 시작합니다.
미리 틀을 준비했어요...얼마나 부드러운지...
보충하다
void Start () 는 재생 단추를 눌렀을 때 실행되는 함수입니다.
void 업데이트 () 는 일부 작업을 수행할 때 실행되는 함수입니다.
void Start () 에 다음 코드를 기입하십시오.
재생 버튼을 누르는 동시에 X축에서 45도 방향으로 공을 날리려고 한다.
void Start () {
// 力を加える向きをVector3型で定義
// 今回はX軸から45度の向きに射出するため、XとYを1:1にする
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 上の向きに加わる力の大きさを定義
float forceMagnitude = 10.0f;
// 向きと大きさからSphereに加わる力を計算する
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
// ForceMode.Impulseは撃力
rb.AddForce(force, ForceMode.Impulse);
}
매번 소개할 수는 없지만 재생 버튼을 누르면 확실히 날아간다.그리고 플레인에 착륙해서 이렇게 네락으로 굴러가서...
이어서 한층 더 개조하다.이번에 클릭해서 날아가서...
클릭하면 어떤 동작을 할 수 있습니까?
편집: SphereBooster>Open C#Project 마우스 오른쪽 버튼으로 클릭
이번 편집은 () 업데이트됩니다.
if (Input.GetKeyUp(KeyCode.Space)){}
이벤트를 시작할 수 있습니까...홀가분하네.
이번 설치는 스페이스 바를 누르면 로그를 토할 것으로 예상된다.
void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// Debug.LogでUnityのコンソールに出力できる
Debug.Log("スペースキーが押されたよ。");
}
눈치채면
Sphere Inspector에 Sphere Booster 란이 나타납니다.
그렇군요. 이렇게 나왔군요.
그림을 남기지는 않았지만 재생 버튼을 누르면
언뜻 보니 아까와 같이 사방으로 투영되었다
스페이스 바를 누를 때마다 스크린 콘솔에 스페이스 바를 눌렀습니다.나타나다.
여기서부터...왜 그림은 남기지 않고 소스만 남겼는지 모르겠다.
Start () 의 사각 투영 코드를 방금 눌렀을 때 if 문장에 삽입하는 것은↓↓
해보니 공간이 밀릴 때마다 사방으로 투사되는 느낌이 든다.
그렇군요. 누를 때마다 날아다니기 때문에 2단 점프 3단처럼 느껴집니다.
'''
public class SphereBooster : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
// KeyCode.Spaceはスペースキーを表す
if (Input.GetKeyUp(KeyCode.Space)){
// ボールを飛ばす処理をStart()からここに移動させる
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// SphereオブジェクトのRigidbodyコンポーネントへの参照を取得
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
// 力を加えるメソッド
rb.AddForce(force, ForceMode.Impulse);
}
}
}'''
...그럼 참고 사이트에서 이 스크립트는 아직도 문제가 많은 것 같습니다. 최종적으로 모두 수정된 코드가 바로 이것입니다.
public class SphereBooster : MonoBehaviour {
// 飛行中フラグ
bool isFlying = false;
// ボタン押下フラグ
bool isBoostPressed = false;
// Sphereオブジェクトの初期位置格納用ベクトル
Vector3 initPosition = Vector3.zero;
void Start(){
initPosition = gameObject.transform.position;
}
void Update(){
// Input.GetKeyUpはキーが一度押された後、それが離された時にTrueを返す
if (Input.GetKeyUp(KeyCode.Space)){
isBoostPressed = true;
}
}
void FixedUpdate(){
if (isBoostPressed){
if (isFlying){
// 飛行中の処理
// 運動の停止
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
// 初期位置に移動させる
gameObject.transform.position = initPosition;
} else {
// ボールを飛ばす処理
// 力を加える方向
Vector3 forceDirection = new Vector3(1.0f, 1.0f, 0f);
// 加える力の大きさ
float forceMagnitude = 10.0f;
// 向きと力の計算
Vector3 force = forceMagnitude * forceDirection;
// 力を加えるメソッド
Rigidbody rb = gameObject.GetComponent<Rigidbody>();
rb.AddForce(force, ForceMode.Impulse);
}
// 飛行中フラグの切り替え
isFlying = !isFlying;
// どちらの処理をしてもボタン押下フラグをfalseに
isBoostPressed = false;
}
}
}
한번 해 보니 확실히 처리하기 쉬워졌다.공백을 누른 후 사각형으로 투영하고, 다시 공백을 누른 후 공은 초기 위치로 돌아가고, 다시 사각형으로 투영한다.
아주 잘했어, 물리 시뮬레이션...
끝내다
API를 제대로 조사하지 않았기 때문에 C#을 처음 접하는 경우
거의 다 경을 쓰는 기분으로 만든 것도 있지만.
상당히 수월하게 하다.쉬워요!
~ 끝~
Reference
이 문제에 관하여(유니티 사각 투영의 물리 실험(3/3)구의 사각 투영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/watyanabe164/items/030fa010d75ab44492ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(유니티 사각 투영의 물리 실험(3/3)구의 사각 투영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/watyanabe164/items/030fa010d75ab44492ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)