Posted March 04, 2021 by xmug
今天研究了研究Unity中2D物体的移动问题,大抵分为两类
一类是使用Transform.position, 强行修改物体位置,并根据Time.DeltaTime 进行渐进式移动。代码:
transform.position += target.transform.position-transform.position * speedScale * Time.deltaTime; // 非匀速运动
或者调用Unity库, MoveTowards
transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speedScale * Time.deltaTime); //匀速运动
缺点是:可能导致人物穿模
另一类是使用刚体速度,代码:
rb.velocity = (Vector2)(target.position - transform.position).normalized * speedScale * Time.deltaTime; //匀速运动
刚体是处在Unity物理引擎之下的,所以并不会导致穿模。
缺点是normalized过后的vector距离很小,需要将speedScale调的很大