【问题标题】:Move character in unity统一移动角色
【发布时间】:2014-02-24 04:18:03
【问题描述】:

我是unity的新手,一直在思考如何移动一个角色,以便它在撞到墙上时会停下来。

目前我使用过这样的代码:

Vector3 pos = transform.position;
if(Input.GetKey("a")) pos.x -= 1;
if(Input.GetKey("d")) pos.x += 1;
transform.position = pos;

但是,角色将通过墙壁移动。 我在 char 中添加了一个刚体组件。

编辑:是的,它们上面确实有一个盒子碰撞器,当它们碰撞时,char 确实开始“反弹”,但是 char 直接穿过墙壁。

【问题讨论】:

  • 墙壁上有盒子碰撞器吗?你有附加到角色的对撞机吗?更多信息会很有用。

标签: c# unity3d collision-detection


【解决方案1】:

你需要让物理引擎为你做移动,所以不要自己设置transform.position。改为设置rigidbody.velocity

int xVelocity = 0;
if(Input.GetKey("a"))
{
    xVelocity = -1;
}
else if(Input.GetKey("d"))
{
    xVelocity = 1;
}

rigidbody.velocity = new Vector3(xVelocity, 0, 0);

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多