Unity 3D中水平射击的角色控制器

时间:2012-01-30 17:34:48

标签: c# unity3d

我正在创建一个水平侧滚动射击游戏,我计划在移动设备上发布。如何设置船只:

  • 它可以自由地上/下/左/右移动(具有不同的水平/垂直速度)
  • 碰撞并阻止障碍物(即IF与障碍物停止碰撞)
  • 水平面(向下+右侧输入)的对角线移动应向右侧按压

不得能够穿越障碍物。

我创建了一个自定义角色控制器,可以根据速度调整位置。我无法弄清楚如何检测碰撞并避免穿过障碍物。必须有一种更简单的方法来实现这个简单的要求。

注意:为了澄清,相机跟随船只,它不会自动滚动。玩家可以通过释放输入按钮来停止发射。

2 个答案:

答案 0 :(得分:1)

首先,请尝试确保您已为障碍物和角色控制器添加了collider组件。这应该足以阻止你的船穿过障碍物。

答案 1 :(得分:0)

我正在存储我自己的velocity向量,然后我使用transform.Translate进行应用。这显然忽略了任何碰撞检测,并且需要自定义碰撞检测实现。

相反,我发现Rigidbody组件包含自己的velocity变量。该速度值可以很容易地改变,并且物体将自动平移并与障碍物碰撞。这是一个例子:

using UnityEngine;
using System.Collections;

public class CharacterController : MonoBehaviour {

    public Vector2 maximumSpeed = new Vector2(1.0f, 1.0f);

    void Start() {

    }

    void Update() {
        Rigidbody rigidbody = GetComponent<Rigidbody>();

        Vector2 velocity = new Vector2();

        velocity.x = Input.GetAxis("Horizontal") * maximumSpeed.x;
        velocity.y = Input.GetAxis("Vertical") * maximumSpeed.y;

        rigidbody.velocity = velocity;
    }

}

这看起来效果很好。评论将不胜感激: - )