unity新手笔记

对2d物体施加一个y方向的力
rigibody2d rg rg.addForce(
new vector2(0,100f))

可以自己填入数值,也可以使用默认的方向

vector.left
vector.right
vector.up
vector.down

 

物体的四个方向移动,但是斜向速度会把两个方向的速度结合,所以斜向运动需要单独写     

if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Translate(Vector2.left * speed * Time.deltaTime);
        }
        if(Input.GetKey(KeyCode.RightArrow))
        {
            transform.Translate(Vector2.right * speed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.UpArrow))
        {
            transform.Translate(Vector2.up * speed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            transform.Translate(Vector2.down * speed * Time.deltaTime);
        }

 

物体移动的同时让图片转向

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

public class player : MonoBehaviour {
    //速度
    public float moveSpeed = 3;
    //获取对象的SpriteRenderer
    private SpriteRenderer sr;
    //新建一个数组存放四个方向的图片,数组内容可以在unity内拖入
    public Sprite[] tankSprite;
	void Start ()
    {
        //获取player的属性
        sr = GetComponent<SpriteRenderer>();
	}
	
	// Update is called once per frame
	void Update ()
    {
        //获取水平方向的移动
        float h = Input.GetAxisRaw("Horizontal");
        if (h < 0)//改变play的sprite 更换图片转向
        {
            //左
            sr.sprite = tankSprite[3];
        }
        else if (h > 0)
        {
            //右
            sr.sprite = tankSprite[1];
        }
        //x轴 * 移动方向 * 移动速度 * 按照时间移动,按照世界坐标
        transform.Translate(Vector3.right * h * moveSpeed * Time.deltaTime,Space.World);

        //获取垂直方向的移动
        float v = Input.GetAxisRaw("Vertical");
        transform.Translate(Vector3.up * v * moveSpeed * Time.deltaTime,Space.World);
        if (v < 0)
        {
            //下
            sr.sprite = tankSprite[2];
        }
        else if (v > 0)
        {
            //上
            sr.sprite = tankSprite[0];
        }
    }
}

 【来源:https://python.iitter.com/other/63611.html,转载请注明】

  

 使用Math.Lerp让物体在一定范围内移动,该函数也适用于让数值在一定范围内浮动

using UnityEngine;

public class Example : MonoBehaviour
{
    // animate the game object from -1 to +1 and back
    public float minimum = -1.0F;
    public float maximum =  1.0F;

    // starting value for the Lerp
    static float t = 0.0f;

    void Update()
    {
        // animate the position of the game object...
        transform.position = new Vector3(Mathf.Lerp(minimum, maximum, t), 0, 0);

        // .. and increase the t interpolater
        t += 0.5f * Time.deltaTime;

        // now check if the interpolator has reached 1.0
        // and swap maximum and minimum so game object moves
        // in the opposite direction.
        if (t > 1.0f)
        {
            float temp = maximum;
            maximum = minimum;
            minimum = temp;
            t = 0.0f;
        }
    }
}

  

 

update函数更新的时间

 

边界 collider

 

触发器 得分等事件 Ontigger

 

生成object instantiate

void update(){

  if(Time.time >nextTime)
  {
        nextTime = Time.time + colddown;
        vector3 changePosition = transform.position;
        changePosition.y += Random.Range(-3f,3f);
        Instantiate(objectx, changePosition, transform.rotation);
    }
}

 

onColiision

audio source

Destroy 如果随机生成的物品太多记得销毁前面生成出来的,例如在10s后销毁

void start(){
    Destroy(gameobject, 10f);
}

 

posted @ 2022-01-22 14:35  neayo  阅读(44)  评论(0编辑  收藏  举报