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

(197评价)
价格: 4431.00元
求助 学习 卡住了
菊花桑发起了话题2017-07-18
8
回复
631
浏览

我在学习  拾荒者 那个课程 现在 学到12课  player 和 outwall ,wall 发生碰撞

问题一  如果 刚体组件 得 is kinematic 点对勾 后 两个刚体 就可以重合 不会 相互排斥 

问题二

using UnityEngine;
using System.Collections;

public class player : MonoBehaviour {
    public float smoothing = 1;
    public float restTime = 1;
  

    private float restTimer = 0;
    private Rigidbody2D rigidbody;
    private BoxCollider2D collider;
    private Animator animator;

 

    private Vector2 targetPos = new Vector2(1,1);

    // Use this for initialization
    void Start () {
        rigidbody = GetComponent<Rigidbody2D>();
        collider = GetComponent<BoxCollider2D>();
        animator = GetComponent<Animator>();

    }
    
    // Update is called once per frame
    void Update () {
        rigidbody.MovePosition(Vector2.Lerp(transform.position, targetPos, smoothing * Time.deltaTime));
        restTimer += Time.deltaTime;
        if (restTimer < restTime) return;

        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");
        if (h > 0) {
            v = 0;
        }

        

        if (h != 0 || v != 0) {
            //检测
            collider.enabled = false;
            RaycastHit2D hit = Physics2D.Linecast(targetPos, targetPos + new Vector2(h, v));
            collider.enabled = true;
            if (hit.transform == null)
            {
                targetPos += new Vector2(h, v);
                //AudioManager.Instance.RandomPlay(step1Audio, step2Audio);
            }
            else
            {
                switch (hit.collider.tag)
                {
                    case "OutWall":
                        break;
                    case "Wall":
                        break;
                }
            }
            //targetPos += new Vector2(h, v);

            
        }
        

    }
}此段代码 执行 player 不能 移动了  不知道怎么回事 我都核对了好几遍  不知道哪里得 错误

还有 一些 代码颜色 

private Rigidbody2D rigidbody;
private BoxCollider2D collider;

rigidbody  collider; 下面 出现绿色得波浪线  不懂 是什么 意思

所有回复
  • 菊花桑 2017-07-18

    怎么插入图片呀 

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-18

    if (hit.transform == null)
                {
                    targetPos += new Vector2(h, v);
                    //AudioManager.Instance.RandomPlay(step1Audio, step2Audio);
                }
                else
                {
                    switch (hit.collider.tag)
                    {
                        case "OutWall":
                            break;
                        case "Wall":
                            break;
                    }
                }

    看看这个里面 是if执行了还是else执行了,在看看射线检测到了什么游戏物体

    is kinematic    勾选上之后,刚体就不会在互相排斥了,这个是刚体自身的特性,不是问题

    • 菊花桑 2017-07-18

      哦哦 是在 if else 插入 Debug.Log 检查吧 那看看射线检测到了什么游戏物体 这个 怎么 检测

      (0) 回复
    • siki 2017-07-18

      回复 @ 菊花桑: 就是直接输出,看看是运行了if还是else,然后输出 hit.collider.gameObject 前提是hit.transform不为空的时候

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • 菊花桑 2017-07-19

    if (hit.transform == null)
                {
                    targetPos += new Vector2(h, v);
                    Debug.Log("ASD");
                    //AudioManager.Instance.RandomPlay(step1Audio, step2Audio);
                }
                else
                {
                    Debug.Log(hit.transform);
                    Debug.Log("ASD2");
                    switch (hit.collider.tag)
                    {
                        case "OutWall":
                            break;
                        case "Wall":
                            break;
                    }
                }

    输出是

    player (UnityEngine.Transform)
    UnityEngine.Debug:Log(Object)
    player:Update() (at Assets/player.cs:51)

    ASD2
    UnityEngine.Debug:Log(Object)
    player:Update() (at Assets/player.cs:52)

    意思是不是是 player 碰撞到了 player

    http://pan.baidu.com/s/1nvuSY1b  老师 我把源码 放在这里了  求助

     

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-19

    就是碰到了自身,所以你在做射线检测碰撞的时候,把自身所在的layer去掉

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 菊花桑 2017-07-20

    老师 我没救了  

    http://pan.baidu.com/s/1nvuSY1b  老师 我把源码 放在这里了  求助

    • 菊花桑 2017-07-20

      老师 不用了 搞定了 原来是因为 不小心 都 上了 一个 box 组件

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