unity物体移动的两种方法

 

第一种使用获取轴进行移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeMovement : MonoBehaviour
{
    public float moveSpeed = 5.0f;

    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        // 计算移动方向
        Vector3 movement = new Vector3(horizontalInput, 0.0f, verticalInput);

        // 根据输入控制Cube移动
        transform.Translate(movement * moveSpeed * Time.deltaTime);
    }
}
解释如下
using 语句引入了所需的命名空间,包括System.Collections和System.Collections.Generic,以及Unity的命名空间UnityEngine。

public float moveSpeed = 5.0f;:这是一个公共变量,用于控制Cube的移动速度。你可以在Unity编辑器中设置这个值。

void Update():这是一个特殊的Unity生命周期函数,它在每一帧都会被调用。在这个函数中,我们将检测输入并控制Cube的移动。

float horizontalInput = Input.GetAxis("Horizontal"); 和 float verticalInput = Input.GetAxis("Vertical");:这两行代码用于获取水平(左右)和垂直(前后)输入。它们使用Input.GetAxis()函数来检测键盘上的"W", "A", "S"和"D"键,以及WASD键对应的箭头键。

Vector3 movement = new Vector3(horizontalInput, 0.0f, verticalInput);:在这里,我们使用horizontalInput和verticalInput创建一个Vector3变量,表示Cube的移动方向。X轴方向由水平输入决定,Z轴方向由垂直输入决定。Y轴设置为0,因为我们不希望Cube在垂直方向上移动。

transform.Translate(movement * moveSpeed * Time.deltaTime);:最后,我们使用transform.Translate()函数来实际移动Cube。我们将movement向量乘以移动速度moveSpeed和时间间隔Time.deltaTime,以确保移动速度不受帧率的影响。这使得Cube按照指定的速度前后左右移动。

当你在Unity编辑器中将这个脚本附加到Cube对象上时,你可以在脚本组件中设置moveSpeed的值,以调整Cube的移动速度。按下"W"键将使Cube向前移动,"S"键向后,"A"键向左,"D"键向右。这个脚本允许你使用键盘控制Cube在平面上移动。

第二种,使用Input.Getkey

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour
{
    public float moveSpeed = 5.0f;//设置移动速度
    void Start()
    {    
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            // 向前移动
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey(KeyCode.S))
        {
            // 向后移动
            transform.Translate(Vector3.back * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey(KeyCode.A))
        {
            // 向左移动
            transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
        }

        if (Input.GetKey(KeyCode.D))
        {
            // 向右移动
            transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);

        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值