【问题标题】:How to set Vector3 direction via an enum?如何通过枚举设置 Vector3 方向?
【发布时间】:2020-12-17 04:22:24
【问题描述】:

总结: 我想在脚本中设置 vector3 的方向。该脚本用于传送带。我希望能够选择传送带的走向。

问题: 我似乎无法弄清楚如何从枚举中设置 vector3 。 下面是包含我想用枚举更改的 vector3 的行。 '''

rBody.position += Vector3.up * speed * Time.fixedDeltaTime;

这是枚举。

public enum direction {up, down, left, right, forward, backward};
public direction moveDirection;

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    使用简单的switch - case

    Vector3 dir;
    switch(moveDirection)
    {
        case direction.up:
            dir = Vector3.up;
            break;
    
        case direction.down:
            dir = Vector3.down;
            break;
    
        case direction.right:
            dir = Vector3.right;
            break;
    
        case direction.left:
            dir = Vector3.left;
            break;
    
        case direction.forward:
            dir = Vector3.forward;
            break;
    
        case direction.back:
            dir = Vector3.back;
            break;
    
        default:
            throw new InvalidEnumArgumentException();
    }
    
    rBody.position += dir * speed * Time.fixedDeltaTime;
    

    或者马上把它变成字典

    private Dictionary<direction, Vector3> directionToVector = new Dictionary<direction, Vector3>
    {
        {direction.up, Vector3.up},
        {direction.down, Vector3.down},
        {direction.right, Vector3.right},
        {direction.left, Vector3.left},
        {direction.forward, Vector3.forward},
        {direction.back, Vector3.back}
    }
    

    然后像这样简单地使用它

    var dir = directionToVector [moveDirection];
    rBody.position += dir * speed * Time.fixedDeltaTime;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多