Unity 对象运动 - 对象只向下和向右?
Unity Object Movement - Object Only Goes Down and Right?
我一直在做一个 Unity 游戏项目,我的精灵只会向右下方移动。这是我当前的脚本:
#pragma strict
function Update (){
var ship = GetComponent(Rigidbody2D);
var speed = 10;
if(Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)){
ship.velocity.y = speed;
}else {
ship.velocity.y = 0;
}
if(Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)){
ship.velocity.x = -1 * speed;
}else {
ship.velocity.x = 0;
}
if(Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)){
ship.velocity.y = -1 * speed;
}else {
ship.velocity.y = 0;
}
if(Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)){
ship.velocity.x = speed;
}else {
ship.velocity.x = 0;
}
}
我喜欢用 Input.GetAxis("Horizontal") 和 Input.GetAxis("Vertical")) 这样可以避免很多代码,而且效果更好。
并且您不需要实例化 rigidbody2D 组件,只需执行以下操作:
rigidbody2d.velocity = new Vector2(speed * Input.GetAxis("Horizontal"), speed * Input.GetAxis("Vertical"));
此外,我没有看到您的代码有任何问题,您的对象中是否还有其他脚本?或者你如何在对象中有你的 rigidbody2D?
我自己弄明白了,问题是我将速度设置为 0,即使我没有先测试其他键。
我一直在做一个 Unity 游戏项目,我的精灵只会向右下方移动。这是我当前的脚本:
#pragma strict
function Update (){
var ship = GetComponent(Rigidbody2D);
var speed = 10;
if(Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)){
ship.velocity.y = speed;
}else {
ship.velocity.y = 0;
}
if(Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)){
ship.velocity.x = -1 * speed;
}else {
ship.velocity.x = 0;
}
if(Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)){
ship.velocity.y = -1 * speed;
}else {
ship.velocity.y = 0;
}
if(Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)){
ship.velocity.x = speed;
}else {
ship.velocity.x = 0;
}
}
我喜欢用 Input.GetAxis("Horizontal") 和 Input.GetAxis("Vertical")) 这样可以避免很多代码,而且效果更好。
并且您不需要实例化 rigidbody2D 组件,只需执行以下操作:
rigidbody2d.velocity = new Vector2(speed * Input.GetAxis("Horizontal"), speed * Input.GetAxis("Vertical"));
此外,我没有看到您的代码有任何问题,您的对象中是否还有其他脚本?或者你如何在对象中有你的 rigidbody2D?
我自己弄明白了,问题是我将速度设置为 0,即使我没有先测试其他键。