0
2D로 스윙 액스를위한 작은 스크립트가 있습니다.유니티 2D 코드를 3D로 번역하기
내 문제는 내가 3D에 2D 코드를 변환하는 방법을 알고하지 않는 것이있다 : 그냥 예를 들어 여기에이 일을 좋아한다. 내 물건에는 Rigidbody과 Hinge Joint (물리학을 스윙하기위한)가 붙어 있습니다.
Rigidbody.angularVelocity
은 float 값 대신 Vector3을 가져와야합니다.
내 코드 :
Rigidbody rigid;
float rangeToPush = 0.3f;
float velocity = 120;
private void Start()
{
rigid = GetComponent<Rigidbody>();
rigid.angularVelocity = Vector3.down * velocity;
}
private void Update()
{
if (transform.rotation.z > 0 &&
transform.rotation.z < -rangeToPush &&
rigid.angularVelocity.magnitude > 0 &&
rigid.angularVelocity.magnitude < velocity)
{
rigid.angularVelocity = Vector3.down * velocity;
}
else if (transform.rotation.z < 0 &&
transform.rotation.z > rangeToPush &&
rigid.angularVelocity.magnitude < 0 &&
rigid.angularVelocity.magnitude > -120)
{
rigid.angularVelocity = Vector3.down * -velocity;
}
}
없는 일들이 분명히
data.Rigid.angularVelocity = ?Vector3?
대신 내 float 값의
내 두 개의 문이 경우 잘못, 내가 가진 마지막
if(/* the other statements .. && */ data.Rigid.angularVelocity > 0 && data.Rigid.angularVelocity < data.RigidVelocity)
의 값입니다
그리고 3D로 변환해야합니다.
도움을 주셔서 감사합니다.
편집 : 나는
data.Rigid.angularVelocity = Vector3.down * data.RigidVelocity;
를 사용하려고 내 경우 명령문
Rigid.angularVelocity.magnitude
그러나 이것은 제한된 시간 동안거야 스윙, 끝이 아닙니다합니다. 어쩌면 데이터 스크립트에서 값을 변경해야하거나 크기 대신 다른 값을 사용해야합니다 ... 모르겠다.
난 그냥 애니메이션으로 애니메이션 또는 애니메이션에 대해하고 AnimationCurve .. – mgear
예 난 그냥 생각 스크립트로 이동합니다. 하지만 필자가 스크립팅을하면 기분이 나아질 것입니다. 그 이유는 다음과 같습니다. – Garzec
평평한 평면 x/y 또는 y/z를 선택하고 그런 식으로 구현하고 왼쪽 위에 축을 무시하십시오. 또는 2 차원 물건을 유지하고, 그것을 표시하지 않고 3D 오브젝트에 변환을 파이프합니다 (비효율적 일 수 있음). – namar0x0309