예, 가능하다는 것을 입증했습니다.
![enter image description here](https://i.stack.imgur.com/uT1qA.jpg)
하면 이미지에서 볼 수 있듯이
, 재귀 I
중첩 5 구,
Z 부모의 + 1 각.
우리는 각각
AddForce
이 될 것이기 때문에 각각에 대해
rigidbody
이 필요합니다.
그리고 여기 스크립트의 중요한 부분이 있습니다.
나는 HeadScript
, BodyScript
, TailScript
라는 이름의 3 스크립트가 (좀 같은 뱀 게임을, 그래서 나는 그처럼 이름)
HeadScript :
void Update() {
if(Input.GetKeyDown(KeyCode.Space)){
rigidbody.AddForce(new Vector3(0, 6, 0), ForceMode.Impulse);
GameObject child = transform.FindChild("Sphere").gameObject;
BodyScript childScript = child.GetComponent<BodyScript>();
childScript.ChildJump();
}
}
HeadScript 만 (맨 오른쪽 머리에 부착 구형), keydown (jumping)을 감지 할 필요가 있습니다. 그리고 나서 점프하고있는 것처럼 보입니다. 그런 다음 자식 객체 (왼쪽에 공)를 가져오고 함수를 호출합니다.이 함수는 BodyScript
안에 있습니다.
BodyScript는 :
public void ChildJump(){
Invoke ("Jump", 0.1f);
}
void Jump(){
rigidbody.AddForce(new Vector3(0, 6, 0), ForceMode.Impulse);
GameObject child = transform.FindChild("Sphere").gameObject;
if(child.GetComponent<BodyScript>() == null){
TailScript childScript = child.GetComponent<TailScript>();
childScript.ChildJump();
}
else {
BodyScript childScript = child.GetComponent<BodyScript>();
childScript.ChildJump();
}
}
BodyScript은 제 1 및 제 마지막을 제외하고 모든 영역에 연결되어 있습니다. 부모 개체는 ChildJump
함수를 호출하며이 함수는 하나의 함수, Invoke
만 포함합니다.
Invoke
은 특정 지연 후 함수를 호출하는 데 사용됩니다. 이 코드에서 지연은 0.1 초입니다.
Jump
은 자체 자식 (왼쪽의 공)을 ChildJump
이라고 부릅니다. 이제 왜 그것이 재귀 적 (recursive)인지를 알 수 있습니다.
마지막 조건에서 BodyScript
구성 요소를 가져올 때 오류가 발생하지 않도록 if 조건을 추가했습니다. 마지막 스크립트에는 TailScript
만 있습니다.
TailScript :이 자식이 없기 때문에
가
public void ChildJump(){
Invoke ("Jump", 0.1f);
}
void Jump(){
rigidbody.AddForce(new Vector3(0, 6, 0), ForceMode.Impulse);
}
마지막 스크립트, TailScript
만, 자체 AddForce
가 포함되어 있습니다.
모든 구 (0을 제외한)는 0 후에 점프합니다.부모로부터 1 초 늦어지고, 당신이 그것을 흔적 렌더러라고 부릅니다.
이제 남은 것은 더 투명 해 지도록 알파 재료를 추가하는 것입니다. 욥이 끝났어!
... 아니요.) – ababab5