我想将角色自动移动到以下对象,而不是键盘控件,我的代码在键盘控件上工作正常,我试图将目标添加为游戏对象,并尝试使角色跟随它,“ 虚拟”是我的公共变量是变量,我将目标分配为游戏对象”,这是到目前为止的代码,
protected virtual void UpdateMovement()
{
// var local = Input.GetAxis("Horizontal") * Vector3.right + Input.GetAxis("Vertical") * Vector3.forward;
//works fine at keyboards controls
var local = new Vector3(0,0,0);
local = dummy.transform.position - transform.position; // I tried this but did'nt work
transform.LookAt(dummy.transform);
var movement = new CharacterMovement();
movement.Direction = getMovementDirection(local);
if (WalkWhenZooming && _controller.ZoomInput)
{
movement.Magnitude = 0.5f;
movement.IsSlowedDown = true;
}
else
{
if ((_motor.ActiveWeapon.Gun != null || _motor.ActiveWeapon.HasMelee) && FastMovement)
{
if (Input.GetButton("Run") && !_motor.IsCrouching)
movement.Magnitude = 2.0f;
else
movement.Magnitude = 1.0f;
}
else
{
if (Input.GetButton("Run"))
movement.Magnitude = 1.0f;
else
movement.Magnitude = 0.5f;
}
}
_controller.MovementInput = movement;
}
答案 0 :(得分:0)
它不起作用没什么意义。它崩溃了吗,显示错误,没有移动,没有移动到预期的其他地方?
我假设local
变量是一个方向(所以为什么不将其命名为direction
?)。计算方式似乎正确。您可以通过替换来简化代码
var local = new Vector3(0,0,0);
local = dummy.transform.position - transform.position;
与
var local = dummy.transform.position - transform.position;
如果它可以与键盘一起使用,则大多数代码必须正确。如果您的角色移动得太快,则可以尝试对方向矢量进行归一化
local = (dummy.transform.position - transform.position).normalized;
如果它没有移动或显示错误,则可能是假人未正确设置。
,您看到期望的位置了吗Debug.Log(dummy.transform.position)
编辑:您也可以尝试通过添加来查看方向是否正确
Debug.DrawLine(transform.position, transform.position + local)