Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2208.00元
拾荒者中主角移动没有反应
戏图发起了问答2019-05-31
15
回复
433
浏览
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class 主角 : MonoBehaviour
{
    private Vector2 当前位置 = new Vector2(1, 1);
    private  Rigidbody2D rigidbody;
    public float 移动速度 = 3f;
    public float 休息时间 = 0.5f;
    private float 计时器; 
    void Start()
    {
        rigidbody = GetComponent<Rigidbody2D>();
    }

  
    void Update()
    {
        rigidbody.MovePosition(Vector2.Lerp(transform.position, 当前位置, 移动速度 * Time.deltaTime));
        计时器 += Time.deltaTime;
        if (计时器<休息时间)
        {
            return;
        }
        float 水平 = Input.GetAxisRaw("Horizontal");
        float 垂直 = Input.GetAxisRaw("Vertical");
        if (水平>0)
        {
            垂直 = 0;
        }
        

        if (水平 != 0 || 垂直 != 0)
        {
            当前位置 += -new Vector2(水平, 垂直);
            计时器 = 0;
        }
        
    }
}

按W、A、S、D主角均无任何反应

所有回复
  • 老师_Trigger 2019-05-31

    同学你好,老师单看这部分代码看不出问题,可以下载一下老师源码对比看一下我们自己的代码,对比一下参数设置有没有问题。另外可以在一些地方debug输出一下,看看逻辑执行是否正确。 还有老师给同学一个小建议就是我们代码不要写成中文的,虽然现在VS跟Unity功能比较强大了,但我们后续做一些功能实现的时候使用中文可能会出现不兼容的情况,另外我们之后如果进公司都是使用英文,不会使用中文哦。

    • 戏图 2019-05-31

      老师,我把脚本改英文试了一遍。还是不行,其中只有垂直的变量有反应

      (0) 回复
    • 戏图 2019-05-31

      回复 @ 戏图: 人物还是什么反应都没有,垂直的变量有反应

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • 戏图 2019-05-31

    //PlayerRigidbody.MovePosition(Vector2.Lerp(transform.position, ThisPostion, MoveSpeed * Time.deltaTime));
            transform.position = ThisPostion;

    应该是PlayerRigidbody.MovePosition(Vector2.Lerp(transform.position, ThisPostion, MoveSpeed * Time.deltaTime));这一行出了问题,我将其注释后写上transform.position = ThisPostion;后主角成功可以移动。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_Trigger 2019-06-01

    能实现移动就行,不一定要使用刚体来移动。如果是刚体不移动可能是力太小或者刚体休眠了,可以把力设置的大一些。

    • 戏图 2019-06-01

      区别是一个是瞬移一个是缓缓前进吗?移动的办法还有哪些呢?又都有什么区别呢

      (0) 回复
    • 老师_Trigger 2019-06-02

      回复 @ 戏图: 他都是缓慢移动的,用刚体是物理系统,就是有一个受力的过程,如果是代码就是单纯的位移。移动方法很多,在课程里有很多种,同学都会慢慢学到

      (0) 回复
    • 戏图 2019-06-03

      回复 @ 老师_Trigger: 老师教程视频中的OnLevelWasLoaded方法和Application.loadlevel()方法已被弃用,怎么办?

      (0) 回复
    • 老师_Trigger 2019-06-04

      回复 @ 戏图: 鼠标放上里边有提示,提示会有新版本使用哪个API去替换它。OnLevelWasLoaded的可以看一下:https://blog.csdn.net/jnbinw/article/details/54837840
      Application.loadlevel()的可以看一下:https://blog.csdn.net/u014800094/article/details/51926073

      (0) 回复
    • 戏图 2019-06-05

      回复 @ 老师_Trigger: 不会用这个SceneManager .sceneLoaded啊,老师能说说怎么用吗?

      (0) 回复
    • 老师_Trigger 2019-06-05

      对于当前项目,首先private bool firstLoad;(作为第一次加载,往委托里注册这个事件,后续不再重复注册)
      Awake里添加firstLoad = true;
      OnPlayerMove()方法里把原来的Application.loadlevel()方法换成if (firstLoad)
      {
      firstLoad = false;
      SceneManager.sceneLoaded += OnSceneLoaded;(不在Awake里注册是为了第一次加载的时候可以正常加载第一关,否则会从第二关开始)
      }
      SceneManager.LoadScene(0, LoadSceneMode.Single);
      如果同学对委托不是很熟悉也没有关系,在C#第二季第二季教程里会学习

      (0) 回复
    • 戏图 2019-06-06

      回复 @ 老师_Trigger: 老师,又有了新问题你看看

      (0) 回复
    还有2条回复,点击查看
    你还没有登录,请先登录注册
  • 戏图 2019-06-06

     

     

    请问为什么物体被加载了两次?而且多生成了一个场景,到达出口后虽然关卡等级有增加和食物数量保存了下来但新场景什么都没加载只保留了中央处理器

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_Trigger 2019-06-06

    下载一下老师的源码工程看看吧,如果不行xian ge zhi等下周老师忙完把工程发给同学

    还有-4条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!