using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour
{
// Start is called before the first frame update
Rigidbody rb=null ;
public float moveSpeed = 10;
public float angularSpeed = 10;
//如何让摄像机跟随
public GameObject Camera12;//摄像机跟随第一步:获取当前摄像机位置。在Unity中,每一个物体都是一个GameObject(类型的实例或者说对象),GameObject包含着transform等其他原件
Vector3 v3 = new Vector3(0, 0, 0);
void Start()
{
//transform.position = new Vector3(transform.position.x, 0, transform.position.z);
//Debug.Log("游戏开始");//Debug,Log可以帮助在游戏控制台中看到日志
rb = this.GetComponent<Rigidbody>();//获取rigidbody这个组件(代码解释:this是关键字表示当前的对象实例;GetComponent<>()是一个泛型方法,用于获取当前对象的组件,这里用于获取Rigidbody这个组件
v3 = Camera12.transform.position - transform.position;//摄像机跟随第二部,让摄像机与当前物体做一个差值(代码解释transform是一个当前游戏对象的变换组件,包含了位置旋转和缩放信息)
}
Update is called once per frame
void Update()//是所描述的帧率,每绘制一帧就会调用update一次
{
transform.position = new Vector3(transform.position.x+0.01F,transform.position.y, transform.position.z);//代码解释:new Vector3 作用是重新定义一个坐标向量,并赋值给原先的坐标,改变位置。transform.position.x+0.01F的作用是在x轴上移动0.01个单位长度
Debug.Log($"当前时间:{DateTime.Now.ToString("mm:ss:fff ")}");
}
//float horizontalInput = Input.GetAxis("Horizontal");//横向轴通过按A,D键向-1和1移动
//float floatx = transform. position.x + horizontalInput;
// float verticalInput = Input.GetAxis("Vertical");
// float folatz = transform.position.z + verticalInput;
// //获取垂直输入轴的数值。
// transform.position = new Vector3(floatx, transform.position.y, folatz);
Debug.Log(horizontalInput);
//float moveSpeed = 10;
定义对象移动的速度。
-1到1之间
//float horizontalInput = Input.GetAxis("Horizontal");
获取水平输入轴的数值。
-1到1之间
//float verticalInput = Input.GetAxis("Vertical");
获取垂直输入轴的数值。
//transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime);//(代码解释Translate是一个方法用于改变游戏对象的位置。moveSpeed*Time.deltaTime的作用是使移动速度与帧率无关,从而使在不同设备上保持同一速度
将对象移动到 XYZ 坐标,分别定义为 horizontalInput、0 以及 verticalInput。
//Debug.Log(horizontalInput);
//float moveSpeed = 10;
定义对象移动的速度。
//float horizontalInput = Input.GetAxis("Horizontal");
获取水平输入轴的数值。
//float verticalInput = Input.GetAxis("Vertical");
获取垂直输入轴的数值。
Time.deltaTime是两帧之间的时间间隔
//transform.Translate(new Vector3(horizontalInput, 0, verticalInput).normalized * moveSpeed * Time.deltaTime);//这里假设horizontalIput为1,horizontalIput*moveSpeed是移动量10,乘Time.deltaTime的作用是将移动速度平坦到每一帧上。
normalized叫做归一化,在向量后加这个东西,可以使WD或者AW/SD/AS这种斜角移动的速度和正方向移动速度相同
将对象移动到 XYZ 坐标,分别定义为 horizontalInput、0 以及 verticalInput。
//Debug.Log(Time.deltaTime);
float horizontalInput = Input.GetAxis("Horizontal");
获取水平输入轴的数值。
float verticalInput = Input.GetAxis("Vertical");
//获取垂直输入轴的数值。
Camera12.transform.position = transform.position + v3;//获取物体当前位置(transform.position),然后加上差值(+v3),再重新赋值给Camera
rb.velocity = transform .forward * verticalInput * moveSpeed;//transform.forward是以z轴为前进方向,rb.velocity 是一个Vector3类型的属性,它表示刚体(Rigidbody)的速度。,verticalInput 是一个浮点数,通常由玩家的输入决定,比如来自垂直移动的键盘输入(如W和S键)或摇杆输入。它的值通常在-1到1之间,代表向前或向后的移动意愿
rb.angularVelocity = transform .up * horizontalInput * angularSpeed;//transform.up是以y轴旋转中心,rb.angularVelocity是一个Vector3类型的属性,它表示刚体(Rigidbody)的角速度。,angularSpeed 是一个浮点数,表示游戏对象的旋转速度。
}
}
Unity-C#控制物体移动旋转(想知道如何更好的运用C#文档查询需要的类或者关键字或者其它系统固定字符请求指教)
最新推荐文章于 2024-09-10 21:41:16 发布