c# - 旋转时控制混乱
问题描述
我正在为我的 Unity 游戏中的角色创建一个简单的控制器脚本。但是,当我按下 W 并让我的角色转动时,它的动作会发生变化,并且所有的键绑定都搞砸了。这是我的转换角色的代码:
transform.rotation = Quaternion.Euler(0,90,0);
我的其余代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
public float moveSpeed;
void Start () {
moveSpeed = 2f;
}
void Update () {
transform.Translate(moveSpeed*Input.GetAxis("Horizontal")*Time.deltaTime,0f,moveSpeed*Input.GetAxis("Vertical")*Time.deltaTime);
var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
if (v==1)
{
transform.rotation = Quaternion.Euler(0,90,0);
}
}
}
解决方案
该Transform.Translate
函数默认在局部空间中的对象中移动。当游戏对象旋转时,这会使 WASD 键移动到对象所面对的位置。
为防止这种情况,请将其移至世界空间。您可以通过传递Space.World
给Transform.Translate
函数的第二个参数来做到这一点。
void Update()
{
var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
Vector3 translation = new Vector3(h, 0, v);
translation *= moveSpeed * Time.deltaTime;
transform.Translate(translation, Space.World);
if (v == 1)
{
transform.rotation = Quaternion.Euler(0, 90, 0);
}
}
推荐阅读
- f# - 使用 F# ExcelProvider 处理多行标题和隐藏列
- php - count():参数必须是第8行实现Countable的数组或对象
- javascript - Ajax 与 Node.js/Express 404
- spring-boot - 未调用 Spring Batch 跳过策略
- python - matplotlib 中使用颜色图的条形图
- reactjs - 盖茨比:独特的“关键”道具
- python - 没有这样的文件或目录:使用绝对路径时
- android - 如何在颤动中获取小部件的坐标、比例和旋转数据?
- fedora - 使用 Fedora 32 安装 ROCm
- python - 将函数应用于我的数据框中的所有列