固定移动方向(三维等距游戏)



我是游戏开发的初学者,目前我对角色的移动方向有问题。游戏处于三维等轴测视图中,摄影机设置为X=30和Y=45,投影设置为正交。问题是向前的方向,当角色向前移动时(当我按W时(,因为它在等轴测视图中,角色向西北或向左倾斜移动45度。这主要是因为相机是有角度的等轴测视图。

我想做的是,当我向前移动时,角色会在屏幕上向上移动,而不是斜向移动。我想过改变整个资产的旋转来改变前进方向,但这需要时间。我也想过通过代码改变移动方向,我改变并添加了一些东西,但这只会打乱玩家的移动。

这是玩家移动的脚本(这是我尝试和错误失败之前的代码(:

using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed, rotationSpeed;
public Joystick joystick;
private CharacterController characterController;
void Start()
{
characterController = GetComponent<CharacterController>();
}
// Update is called once per frame
void FixedUpdate()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 movementDirection = new Vector3(horizontalInput, 0, verticalInput);
float magnitude = Mathf.Clamp01(movementDirection.magnitude) * speed;
movementDirection.Normalize();
//transform.Translate(movementDirection * magnitude * Time.deltaTime, Space.World);
characterController.SimpleMove(movementDirection * magnitude);
if (movementDirection != Vector3.zero)
{
Quaternion toRotation = Quaternion.LookRotation(movementDirection, Vector3.up);
transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, rotationSpeed * Time.deltaTime);
}
}
}

您可以通过对movementDirection应用旋转来更正它。

类似于:

movementDirection = Quaternion.Euler(0,45f,0) * movementDirection;//rotates by 45° on y axis

在你做翻译和方向介绍之前。

相关内容

  • 没有找到相关文章

最新更新