私はこれを理解するのに少し苦労しています。私が達成しようとしているのは、一種のタックル モーションです。プレイヤーは遠くからターゲットに突進します。
図はセットアップを示しています。青いひし形がプレイヤーで、赤いものがターゲットです。紫色のボックスは、ターゲットの SkinnedMeshRenderer のレンダラー境界です。一部のターゲットのメッシュは他のターゲットよりもはるかに大きいため、レンダラー境界を使用しています。現在、プレイヤーはオレンジ色の星を狙っています...これは非現実的です。私は彼に、ターゲットがどの方向を向いていても、彼の位置に関連してターゲットの最も近い点を常にターゲットにしてほしい.図の場合、それは茶色の星になるだろう. これが私が使用しているコードです...
public IEnumerator Blitz()
{
rigidbody.velocity = Vector3.zero; //ZERO OUT THE RIGIDBODY VELOCITY TO GET READY FOR THE BLITZ
SkinnedMeshRenderer image = target.GetComponentInChildren<SkinnedMeshRenderer>();
Vector3 position = image.renderer.bounds.center + image.renderer.bounds.extents;
position.y = target.transform.position.y;
while(Vector3.Distance(transform.position, position) > 0.5f)
{
transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * 10);
yield return null;
}
Results(); //IRRELEVANT TO THIS PROBLEM. THIS CALCULATES DAMAGE.
Blitz.Stop(); //THE PARTICLE EFFECT ASSOCIATED WITH THE BLITZ.
GetComponent<Animator>().SetBool(moveName, false); //TRANSITIONS OUT OF THE BLITZ ANIMATION
GetComponent<Input>().NotAttacking(); //LET'S THE INPUT SCRIPT KNOW THE PLAYER CAN HAVE CONTROL BACK.
}