Unity-C#控制物体移动旋转(想知道如何更好的运用C#文档查询需要的类或者关键字或者其它系统固定字符请求指教)

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 是一个浮点数,表示游戏对象的旋转速度。
    }

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值