using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class 主角 : MonoBehaviour
{
private Vector2 当前位置 = new Vector2(1, 1);
private Rigidbody2D rigidbody;
public float 移动速度 = 3f;
public float 休息时间 = 0.5f;
private float 计时器;
void Start()
{
rigidbody = GetComponent<Rigidbody2D>();
}
void Update()
{
rigidbody.MovePosition(Vector2.Lerp(transform.position, 当前位置, 移动速度 * Time.deltaTime));
计时器 += Time.deltaTime;
if (计时器<休息时间)
{
return;
}
float 水平 = Input.GetAxisRaw("Horizontal");
float 垂直 = Input.GetAxisRaw("Vertical");
if (水平>0)
{
垂直 = 0;
}
if (水平 != 0 || 垂直 != 0)
{
当前位置 += -new Vector2(水平, 垂直);
计时器 = 0;
}
}
}
按W、A、S、D主角均无任何反应
//PlayerRigidbody.MovePosition(Vector2.Lerp(transform.position, ThisPostion, MoveSpeed * Time.deltaTime));
transform.position = ThisPostion;
应该是PlayerRigidbody.MovePosition(Vector2.Lerp(transform.position, ThisPostion, MoveSpeed * Time.deltaTime));这一行出了问题,我将其注释后写上transform.position = ThisPostion;后主角成功可以移动。
能实现移动就行,不一定要使用刚体来移动。如果是刚体不移动可能是力太小或者刚体休眠了,可以把力设置的大一些。