通过WASD禁止统一移动

时间:2018-07-10 13:44:08

标签: c# unity3d

我的问题如下: 我有一个进行比赛的场景。 我还可以通过鼠标四处移动(例如在《模拟人生》中之类的东西,例如,当我的鼠标位于屏幕的左侧区域时,摄像头也将移至该位置) 但是WASD键也可以做到这一点,我不希望这样做。 尤其是因为我在那里聊天,每次我在其中键入内容时,相机都会移动...

我尝试通过项目设置>输入并删除alt键(wasd)禁用它,但这无济于事。 (我也不知道为什么)

非常感谢!

代码如下:

void borderMovement(){
    if (Input.mousePosition.x >= Screen.width - border) {
        transform.position += vRightDirection * Time.deltaTime * mouseSpeed;
    } else if (Input.mousePosition.x <= 0 + border) {
        transform.position += vLeftDirection * Time.deltaTime * mouseSpeed;
    } else if (Input.mousePosition.y >= Screen.height - border) {
        transform.position += vUpDirection * Time.deltaTime * mouseSpeed;
    } else if (Input.mousePosition.y <= 0 + border) {
        transform.position += vDownDirection * Time.deltaTime * mouseSpeed;
    } 

}

border只是一个浮点数,而v...Directions是Vector3。

1 个答案:

答案 0 :(得分:1)

是否可以冻结播放器/摄像机的位置?

如果您查看该组件的刚体, 展开约束菜单。

我猜X,Y和Z的冻结位置未选中。

如果您检查X,Y和Z的冻结旋转怎么办?

我知道它无关紧要,但是我有一个EnemyMovement脚本的代码,可以将其扩展为在“冻结”时关闭GameObjects的移动

Enemy1Movement.js:

#pragma strict

var initPos : Vector3;
var enemyWiggle : Vector2;
public var enemySpeed : float;
public var isFrozen : boolean = false;
function Start () {
    initPos = transform.position;
}

function Update () {
    if (isFrozen == false){

    transform.position.x = initPos.x + Mathf.PingPong(Time.time * enemySpeed, enemyWiggle.x);
    transform.position.z = initPos.z + Mathf.PingPong(Time.time * enemySpeed, enemyWiggle.y);


    }

}