Beispiel #1
0
    public virtual void Init(CharacterAttr attr)
    {
        this.attr        = attr;
        this.characterid = attr.id;
        this.sceneid     = attr.mapid;

        _transform = new RoleTransform();
    }
    public void Init(RoleTransform transform, LunaNavmeshQuery navmeshQuery)
    {
        _navQuery  = navmeshQuery;
        _transform = transform;


        if (_navQuery != null)
        {
            _navMeshQuery = _navQuery._navMeshQuery;
            filter        = _navQuery.filter;
            crowd         = _navQuery.Crowd;

            param = new CrowdAgentParams
            {
                Radius                = Radius,
                Height                = Height,
                MaxAcceleration       = MaxAcceleration,
                MaxSpeed              = MaxSpeed,
                CollisionQueryRange   = CollisionQueryRange,
                PathOptimizationRange = PathOptimizationRange,
                UpdateFlags           = UpdateFlags,
                ObstacleAvoidanceType = ObstacleAvoidanceType,
                SeparationWeight      = SeparationWeight
            };

            Luna3D.Vector3 pos = _transform.GetPosition();
            AgentId = _navQuery.Crowd.AddAgent(new[] { pos.x, pos.y, pos.z }, param);
            //ResetTarget();

            _crowdAgent = crowd.GetAgent(AgentId);
            float[] resetpos = _crowdAgent.npos;
            _transform.SetPosition(new Vector3(resetpos[0], resetpos[1], resetpos[2]));
        }
        else
        {
            System.Console.WriteLine("Scene does not have a Nav Mesh Query, one must be added.");
        }
    }