我试着让物体在自转的同时飞向左边
下面是 MoveLeft 脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveLeft : MonoBehaviour
{
private float moveLeftSpeed = 10;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(Vector3.left * Time.deltaTime * moveLeftSpeed);
}
}
下面是 SpinObjects 脚本:
using System.Collections.Generic;
using UnityEngine;
public class SpinObjectsX : MonoBehaviour
{
public float spinSpeed = 50;
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, Time.deltaTime * spinSpeed, 0));
}
}
我希望物体的运动看起来像这样,它只是向左移动,然后自己旋转。
但是当我使用这两个脚本时,对象的移动非常奇怪,它仍然在旋转自己,但不是向左移动,而是绕着某个东西旋转...
1条答案
按热度按时间iyfjxgzm1#
默认情况下,
Translate
和Rotate
都在相应对象的本地空间中工作,除非您显式传入Space.World
作为附加的最后一个参数。因此,在绕Y轴旋转对象之后,它的局部
left
向量也随之旋转,并指向其他位置。=〉当你做局部空间向物体左边的平移时,它实际上并没有在世界上向左移动。
为了在绝对世界空间中向左移动您要使用的