CharacterController.Move invocado en el controlador inactivo

En resumen, ¡simplemente no puedo moverme, no puedo moverme! !

En resumen, ¡simplemente no puedo moverme, no puedo moverme! !

En resumen, ¡simplemente no puedo moverme, no puedo moverme! !

Un montón de ellos en Internet, .Move() .SimpleMove()

Neto di algo

Quien no puede llamar a una Api, el problema es que no se puede mover, como solucionarlo?

Algunas personas tienen que hablar sobre la diferencia entre las dos API, veamos el código fuente

Todo bien. . . No puede ser visto

    /// <summary>
    ///   <para>Moves the character with speed.</para>
    /// </summary>
    /// <param name="speed"></param>
    public bool SimpleMove(Vector3 speed) => CharacterController.INTERNAL_CALL_SimpleMove(this, ref speed);

    [GeneratedByOldBindingsGenerator]
    [MethodImpl(MethodImplOptions.InternalCall)]
    private static extern bool INTERNAL_CALL_SimpleMove(CharacterController self, ref Vector3 speed);

    /// <summary>
    ///   <para>A more complex move function taking absolute movement deltas.</para>
    /// </summary>
    /// <param name="motion"></param>
    public CollisionFlags Move(Vector3 motion) => CharacterController.INTERNAL_CALL_Move(this, ref motion);

Como se desprende de lo anterior, ¿Mueve el personaje con velocidad (no con tiempo delta)?

Tanto SimpleMove() como Move() usan la API interna del método Internal, pero simpleMove

no

sin delta

No sé cómo SimpleMove suaviza el movimiento sin delta (según los comentarios anteriores)

Te encanta usar .SimpleMove() lo usas tú mismo

Pero el problema sigue siendo que no podemos movernos cuando usamos CharacterController.Move()

 

Después de la prueba, se encontró que el problema ocurrió en la función encapsulada por mí mismo o en el BUG creado por mí mismo.

	//	HandleMovement();
	}

	private void LateUpdate()
	{
		HandleMovement();
		//ce测试过,可以移动 
		//GetComponent<CharacterController>().Move(new Vector3(0.1f, 0, 0) * Time.deltaTime);
	}

La solución final es ajustar HandleMovement(), que debería haber sido un componente descendente de Move() antes, lo que resultó en anomalías e incapacidad para moverse.

Supongo que te gusta

Origin blog.csdn.net/avi9111/article/details/122776624
Recomendado
Clasificación