精灵在统一 2D C# 中不移动

Posted

技术标签:

【中文标题】精灵在统一 2D C# 中不移动【英文标题】:Sprite not moving in unity 2D C# 【发布时间】:2021-09-29 23:32:29 【问题描述】:

我正在学习制作游戏的教程,但是当我写他们写的东西时,它不会动。

脚本附加到精灵,但是当我点击 WASD 时,它没有别动。

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

public class Movment : MonoBehaviour

    // Start is called before the first frame update

    public float speed = 5f;
    void Start()
    
        
    

    // Update is called once per frame
    void Update()
    
           float h = Input.GetAxis("Horizontal");
           float v = Input.GetAxis("Vertical");

           Vector2 pos = transform.position;

           pos.x += h * speed * Time.deltaTime;
           pos.y += v * speed * Time.deltaTime;
    

【问题讨论】:

【参考方案1】:

由于Vector2 是一个值类型(结构),Vector2 pos = transform.position 将复制转换位置,原始位置不受您对pos 所做的任何更改的影响。要更新位置,请在将 pos 设置为新位置后使用 transform.position = pos

void Update()

    float h = Input.GetAxis("Horizontal");
    float v = Input.GetAxis("Vertical");

    Vector2 pos = transform.position;

    pos.x += h * speed * Time.deltaTime;
    pos.y += v * speed * Time.deltaTime;
    transform.position = pos;

见:What's the difference between struct and class in .NET?

【讨论】:

那我该怎么办? @BraydenTodorov 您需要将 pos 应用回精灵位置。 @BraydenTodorov 如果此解决方案对您有用,请不要忘记接受答案!

以上是关于精灵在统一 2D C# 中不移动的主要内容,如果未能解决你的问题,请参考以下文章

当另一个精灵移动时如何检查精灵的边界? (Cocos2D)

cocos2d js-触摸一起向上移动的叠加精灵

iPhone,Cocos2D - 在触摸屏时向左/向右移动精灵

尝试获取用户输入以在 Cocos2D-X 中移动精灵

Cocos2d,在竖直放置时使用加速度计在具有 x 轴的横向错误中移动精灵

在屏幕的指定区域使用 touchmoved 移动精灵