Unity移动,动画,音乐和常用函数...

本文档详细介绍了在Unity中使用C#进行游戏元素控制的方法,包括移动物体、操作媒体组件、修改UI文本、程序退出以及常用函数的运用。通过实例代码展示了如何响应玩家输入实现角色移动、播放/停止音乐和动画,以及更新UI文本。同时,还讲解了如何实现跳跃、控制Rigidbody组件以及处理各种输入事件。
摘要由CSDN通过智能技术生成
**前言**:unity使用C#语言来做控制游戏元素的脚本,本笔录使用vs2019编译C#脚本.

一.如何移动

  1. 使用transform.position,不断改变位置以形成移动.
using UnityEngine;
public class Move : MonoBehaviour
{
    //movement speed in units per second
    private float movementSpeed = 5f;

    void Update()
    {
        //get the Input from Horizontal axis
        // 对应键盘上面的左右箭头,当按下左或右箭头时触发,按键A和D亦可
        float horizontalInput = Input.GetAxis("Horizontal");
        //get the Input from Vertical axis
        //对应键盘上面的上下箭头,当按下上或下箭头时触发,按键W和S亦可
        float verticalInput = Input.GetAxis("Vertical");

        //update the position
        transform.position = transform.position + new Vector3(horizontalInput * movementSpeed * Time.deltaTime, verticalInput * movementSpeed * Time.deltaTime, 0);

        //output to log the position change
        Debug.Log(transform.position);
    }
}
  1. 另外还可以使用transform.Translate()函数
    https://docs.unity.cn/cn/2019.4/ScriptReference/Transform.Translate.html
  2. 使用velocity为Rigidbody添加速度
    https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody-velocity.html
  3. 使用AddForce为Rigidbody添加力
    https://docs.unity.cn/cn/2019.4/ScriptReference/Rigidbody.AddForce.html
  4. 跳跃也应属移动的一种,我们可以使用velocity或AddForce实现移动,下面以velocity为例:
using UnityEngine;
using System.Collections;
/*
*下面并不是单纯的跳跃代码,而是额外使用了OnCollisionEnter2D()来使得物体不能空中跳跃
*/
public class Velocity : MonoBehaviour
{
    public Rigidbody2D rb;
    bool Isjumping = false;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)&& !Isjumping)
        {
            rb.velocity = new Vector3(0, 10, 0);
            Debug.Log("jumpyes");
            Isjumping = true;
        }
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        Isjumping = false;
    }

}


二.如何控制媒体等组件

媒体

  1. 音乐开/关
//定义
public AudioSource Au;
//赋值
Au = GetComponent<AudioSource>();
//播放
Au.Play();
//暂停
Au.Stop();
  1. 动画开/关
//定义
public Animation an;
//赋值
an = GetComponent<Animation>();
//播放
an.Play();
//暂停
an.Stop();

非媒体

  1. sprite切换
//定义sprite数组
public SpriteRenderer SP;
public Sprite[] pic;
//为sprite选用pic[0];
GetComponent<SpriteRenderer>().sprite = pic[0];

三.如何改写UI中的text

  1. 时间text(int型、float型)
//定义Text
public Text timeText;
//定义时间
float timenum = 60;
//更改内容到timeText,"0"整型形式,"0.0"一位小数形式
timeText.text = timenum.ToString("0");

我们可以将其放入update中形成诸如倒计时等功能

void Update()
    {
        timenum -= Time.deltaTime;//Time.deltaTime指完成上一帧所用的时间(以秒为单位)(只读)。此属性提供当前帧和上一帧之间的时间。
        timeText.text = timenum.ToString("0");
    }
  1. 文本text(string型)
public Text Txt;
Txt.text = "内容";

四.退出程序

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;



public class OutGame : MonoBehaviour

{



    public void Quit()

    {

#if     UNITY_EDITOR

        UnityEditor.EditorApplication.isPlaying = false;//编辑状态下退出

#else

        Application.Quit();//打包编译后退出

#endif

    }

}

五.常用函数

函数名作用
DestoryImmediate()立即销毁对象
Destory()销毁对象(可以添加销毁延迟)
OnDestroy()当前脚本被销毁时调用
Input.GetKey()按下某键,持续返回true
Input.GetKeyDown按下某键的一瞬间,返回true
Input.GetKeyUp松开某键的一瞬间,返回true
Input.GetMouseButton(0)持续检测是否按鼠标左键(针对鼠标左中右键,0,1,2三个方法同)
OnMuseDown当鼠标按下
OnMouseEnter当鼠标进入
OnMuseExit当鼠标退出
OnCollisionEnter(Collision)当碰撞开始时,调用该方法一次
OnCollisionExit(Collision)当碰撞结束时,调用该方法一次
OnCollisionStay(Collision)当碰撞进行中,持续调用该方法
OnTriggerEnter(Collider)当碰撞开始时,调用该方法一次
OnTriggerExit(Collider)当碰撞结束时,调用该方法一次
OnTriggerStay(Collider)当碰撞进行中,持续调用该方法
Invoke()延时执行
LoadScene()跳转场景
DontDestroyOnLoad()切换场景不摧毁
Instantiate()克隆对象

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值