Unity从0开始摸鱼:初章

2月28日

学了两个礼拜的unity,到今天才想起来得整个东西记录一下学习和问题啥的,失策了。

亡羊补牢从今天开始也不算晚。

就记录一下还记得的一些问题吧。

下面是关于脚本script的一些内容

GameObject:十分重要,场景内的组件都可用这个来定义

Vector2<x,y>:2d坐标

随机取得位置函数:

private Vector2 RandomPosition()
    {
        //随机取得位置
        int PositionIndex = Random.Range(0, positionList.Count);
        Vector2 pos = positionList[PositionIndex];
        positionList.RemoveAt(PositionIndex);

        return pos;
    }

将创建出来的场景物体都归到一个文件夹中:

GameObject go =  GameObject.Instantiate(WallPrefab, pos, Quaternion.identity);
            go.transform.SetParent(MapHolder);

主角的碰撞检测:

 //碰撞检测
            collider.enabled = false;//去掉自身所处位置的碰撞
            RaycastHit2D hit =  Physics2D.Linecast(TargetPos,TargetPos+new Vector2(h,v));//(开始位置,结束位置)
            collider.enabled = true;//检测后再将原本位置的碰撞加上
            if (hit.transform == null)
            {
                //无碰撞
            }
            else
            {
               //有碰撞
            }

控制移动:主要是按下按键的检测:

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)
        {
            TargetPos += new Vector2(h, v);
        }

受到攻击判定:

 private int  HP=2;
    public Sprite DamageSprite;//收到攻击的图片/动画

    //自身受到攻击
    public void TakeDamage()
    {
        HP -= 1;
        GetComponent<SpriteRenderer>().sprite = DamageSprite;//将图片设为收到攻击时的图片
        if (HP <= 0)
        {
            Destroy(this.gameObject);
        }
    }

判断方位

Vector2 offset = player.position - transform.position;

下面是unity内组件的一些运用

Animator:动画组件

Box Collider:碰撞组件

Rigidbody :刚体组件

       其中body type中kinematic为不受重力影响

发布了39 篇原创文章 · 获赞 0 · 访问量 1450

猜你喜欢

转载自blog.csdn.net/Z3Djoker/article/details/104557294