API https://docs.unity3d.com/2022.3/Documentation/ScriptReference/Transform.html


相关类:

1.实现飞机移动控制
// 这个脚本实现控制飞机前后移动,方向由鼠标控制
//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜
第一版 飞机移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//【客户】->【你】—>【Unity】
//【客户-业务逻辑】1.用W S 控制飞机前后移动 2.A和D 控制飞机左右旋转
//【你-程序逻辑】1.如用户按下W 就控制飞机往Z 轴方向移动 2.如果用户按下AD 就控制飞机围绕Y 轴旋转
//By leoyang 2025.10.11
//[Unity]
public class MoveControll : MonoBehaviour
{
//如何把美术素材拿到代码里面
public float moveSpeed = 15f;
public float rotateSpeed = 15f;
public Transform airplan;
void Update()
{
if (Input.GetKey(KeyCode.W))
{
airplan.Translate(0, 0, moveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
airplan.Translate(0, 0, -moveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
airplan.Rotate(new Vector3(0, 555555, 0), -rotateSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))
{
airplan.Rotate(new Vector3(0, 555555, 0), rotateSpeed * Time.deltaTime);
}
}
}
第二版 飞机移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// 这个脚本实现控制飞机前后移动,方向由鼠标控制
//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜
//2025.4.2@leoyang
public GameObject PlayerPlane;
public float Speed=10f;
public float RotateSpeed = 5f;
//---------------------
void Update()
{
if (Input.GetKey(KeyCode.W))
{
PlayerPlane.transform.Translate(new Vector3(0, 0, 1* Speed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.S))
{
PlayerPlane.transform.Translate(new Vector3(0, 0,-1* Speed*Time.deltaTime));
}
if (Input.GetKey(KeyCode.A))
{
PlayerPlane.transform.Rotate(new Vector3(0, 0, 1* RotateSpeed*Time.deltaTime));
}
if (Input.GetKey(KeyCode.D))
{
PlayerPlane.transform.Rotate(new Vector3(0, 0, -1 * RotateSpeed * Time.deltaTime));
}
}
}
第三版 飞机移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// 这个脚本实现控制飞机前后移动,方向由鼠标控制
//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜
//2025.4.2@leoyang
public GameObject PlayerPlane;
public float Speed=10f;
public float RotateSpeed = 5f;
public float ViewRotateSpeed = 10f;
//---------------------
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
MoveController();
ViewController();
}
/// <summary>
/// 控制飞机基本移动
/// </summary>
void MoveController()
{
float tempValue = Input.GetAxis("Vertical");
PlayerPlane.transform.Translate(new Vector3(0, 0, tempValue * Speed * Time.deltaTime));
float tempADValue = Input.GetAxis("Horizontal");
PlayerPlane.transform.Rotate(new Vector3(0, 0, tempADValue * RotateSpeed * Time.deltaTime));
}
/// <summary>
/// 这个函数是通过鼠标控制视角方向
/// </summary>
void ViewController()
{
//Input.mousePosition.x
float RotateXValue= Input.GetAxis("Mouse X");
PlayerPlane.transform.Rotate(new Vector3(0, RotateXValue * ViewRotateSpeed*Time.deltaTime,0));
float RotateYValue = Input.GetAxis("Mouse Y");
PlayerPlane.transform.Rotate(new Vector3(RotateYValue * ViewRotateSpeed*Time.deltaTime,0,0));
}
}
2.实现摄像机看向飞机
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LookATPlayer : MonoBehaviour
{
// 1. 2.
public Transform CameraTran;
public Transform PlayerTran;
void Update()
{
CameraTran.LookAt(PlayerTran);
}
}

3.月球围绕地球转
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoonRotateAround : MonoBehaviour
{
// 这个脚本是实现,一个球围绕另一个球旋转,保持一定距离
// 1.把月球拿到代码里 2.把被围绕的物体拿到代码里 3.围绕旋转
// 声明公共变量,可以在Unity编辑器的Inspector面板中直接赋值
public GameObject MoonObj; // 引入月球对象(围绕旋转的物体)
public GameObject EarthObj; // 引入地球对象(被围绕的中心物体)
// 旋转速度,控制月球围绕地球旋转的快慢
// float是浮点数类型,用于存储小数
// 设置为10f表示每秒旋转10度
float rotateAroundSpeed = 10f;
// Update方法在每一帧都会被调用
// 游戏通常以每秒60帧的速度运行,所以这个方法会频繁执行
void Update()
{
// 使用RotateAround方法让月球围绕地球旋转
// RotateAround方法需要三个参数:
// 1. 旋转中心点:EarthObj.transform.position - 地球的位置坐标
// 2. 旋转轴:new Vector3(0, 1, 0) - 围绕Y轴旋转
// Vector3(0, 1, 0) 表示Y轴方向
// 如果要围绕X轴旋转,使用 Vector3(1, 0, 0)
// 如果要围绕Z轴旋转,使用 Vector3(0, 0, 1)
// 3. 旋转角度:rotateAroundSpeed * Time.deltaTime
// Time.deltaTime是上一帧到当前帧的时间间隔
// 乘以Time.deltaTime可以让旋转速度与帧率无关,确保在不同性能的电脑上旋转速度一致
MoonObj.transform.RotateAround(EarthObj.transform.position, new Vector3(0, 1, 0), rotateAroundSpeed * Time.deltaTime);
// 被注释掉的代码 - 这是一行错误的示例
// 错误原因:RotateAround的第一个参数应该是位置坐标,而不是旋转角度
// 第二个参数应该是旋转轴向量,而不是浮点数
// MoonObj.transform.RotateAround(new Vector3(0, MoonObj.transform.rotation.y, 0), 10f);
}
}

36万+

被折叠的 条评论
为什么被折叠?



