控制角色转身之后进行运动以及使角色转弯

很多游戏中,我们通过向前移动来控制角色到达目的地,

这要求我们的控制角色要直面目的地,当角色没有面对目标,

我们需要旋转过后再往前走,简单的往前可以是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)));


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值