概述
很多游戏中,我们通过向前移动来控制角色到达目的地,
这要求我们的控制角色要直面目的地,当角色没有面对目标,
我们需要旋转过后再往前走,简单的往前可以是LookAt(),然后直接往前走。
有过程的旋转可以通过
Vector3 forwardDir = targetGameObject.transform.position - transform.position;
forwardDir=forwardDir.normalized;
transform.forward = Vector3.Lerp(transform.forward, forwardDir, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime);
语句来实现,但是这不能保证旋转过后再往前走。
所以下面给出旋转了再走的代码:
IEnumerator TurnAroundAndWalkToAim()
{
Vector3 lookAtTarget = target.transform.position - transform.position;
Quaternion targetRotation = Quaternion.LookRotation(lookAtTarget, transform.up);
while (Mathf.Abs((transform.rotation.eulerAngles - targetRotation.eulerAngles).y) > 0.1f)
{
transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime);
yield return 0;
}
myController.SimpleMove(CharacterState.Instance.moveSpeed * transform.forward);
}
这里0.1f可以改大改小。
使角色转弯则是在旋转的同时保持角色往前行进即可。
Vector3 targetDir = targetPos - transform.position;
forwardDir=forwardDir.normalized;
transform.forward = Vector3.Lerp(transform.forward, targetDir, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime);
myController.SimpleMove(myState.moveSpeed * transform.TransformDirection(new Vector3(0, 0, 1)));
最后
以上就是长情纸鹤为你收集整理的控制角色转身之后进行运动以及使角色转弯的全部内容,希望文章能够帮你解决控制角色转身之后进行运动以及使角色转弯所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复