首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一C#:旋转问题,现在面对错误方向

统一C#:旋转问题,现在面对错误方向
EN

Stack Overflow用户
提问于 2018-04-03 07:05:49
回答 2查看 1.5K关注 0票数 1

我有一个性格/刚体,“她”可以转过身来。当我按下“团结”时,如果我向前/向后,那很好,她向前/向后移动。这是个很好的开始。

但是,如果我把她左转或右转,然后向前/后退,她现在就会侧身移动。

她是一个刚体组件,被设定为现场的家长。

当然,这并不难做,但我不知道如何设置她的旋转,以便当她转身时,她会‘向前’时,我按下按钮推动她前进!有很多第一人称射击游戏,你可以转身和移动‘前进’和球员走在正确的方向。

我现在的轮换脚本是:

代码语言:javascript
复制
Vector3 EulerAngleVelocity;
public float rotateSpeed = 250.0f;

void Update() {
    if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow))
    {
        MoveVector = PoolInput();
        Move();
    }

    if (Input.GetKey(KeyCode.RightArrow))
    {
        EulerAngleVelocity = new Vector3(0, rotateSpeed, 0);
        Quaternion deltaRotation = Quaternion.Euler(EulerAngleVelocity * Time.deltaTime);
        rigidbody.MoveRotation(rigidbody.rotation * deltaRotation);
    }
}

private void Move()
{
    rigidbody.AddForce((MoveVector * moveSpeed));
}

private Vector3 PoolInput()
{
    Vector3 dir = Vector3.zero;

    dir.x = joystick.Horizontal();
    dir.z = joystick.Vertical();

    if (dir.magnitude > 1)
        dir.Normalize();

    return dir;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-03 08:25:10

你在移动你的操纵杆,把这个方向与世界联系起来,而不是你的玩家。如果您想要添加相对于RigidBody的方向的强制,那么您想要使用的可能是rigidBody.AddRelativeForce (文档),而不是简单的rigidBody.AddForce

票数 5
EN

Stack Overflow用户

发布于 2018-04-03 07:34:30

你的问题不是你的旋转代码,而是你的移动代码。你是在世界空间应用一个运动,而不是局部空间(“物体”-空间)。

例如,如果使用的是Vector3.Forward,则需要使用transform.Forward

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49624152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档