zoukankan      html  css  js  c++  java
  • Unity 2D 效应器与来回移动的实现

    1.效应器

    Point Effector 2D: 点效应器。进入区域,吸引或排斥物体

    Area Effector 2D: 区域效应器,可以用来做马里奥的管道移动效果

    Surface Effector 2D :表面效应器。实现传送带效果

    PlatForm Effector 2D:平台效应器。实现2D游戏里面的台阶效果

    2.控制移动

    // Update is called once per frame
        void Update () {
            if (Input.GetKey(KeyCode.A))
            {
                MoveLeft();
            }
            if (Input.GetKey(KeyCode.D))
            {
                MoveRight();
            }
            if (Input.GetKeyDown(KeyCode.Space))
            {
                Jump();
            }
        }
            void MoveLeft()
        {
            var v = rgbd.velocity;
            v.x = -movespeed;
            rgbd.velocity = v;
            //gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.left * movespeed, ForceMode2D.Force);
        }
    
        void MoveRight()
        {
            var v = rgbd.velocity;
            v.x = movespeed;
            rgbd.velocity = v;
            //gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.right * movespeed, ForceMode2D.Force);
        }
    
        public void Jump()
        {
            if (isground)
            {
                gameObject.GetComponent<Rigidbody2D>().AddForce(Vector2.up * jumpspeed, ForceMode2D.Impulse);
                isground = false;
            }
            
        }

    3.敌人来回移动

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class laihui : MonoBehaviour {
    
        public float movespeed=3.0f;
        private Vector2 currentposition;
        public float distnation=10.0f;
        private int face = 1;
    
        // Use this for initialization
        void Start () {
            currentposition = gameObject.transform.position;
        }
        
        // Update is called once per frame
        void Update () {
            if (face == 1)
            {
                gameObject.transform.Translate(Vector2.right * movespeed * Time.deltaTime);
            }
            if (face == 0)
            {
                gameObject.transform.Translate(Vector2.left * movespeed * Time.deltaTime);
            }
            if (gameObject.transform.position.x > currentposition.x+distnation)
            {
                face = 0;
            }
            if (gameObject.transform.position.x < currentposition.x)
            {
                face = 1;
            }
        }
    }
  • 相关阅读:
    【转载】Myeclipse如何自动创建hibernate
    win7 64位mysql安装及navicat 解压版
    NuGet套件还原步骤(以vs2012为例)
    Html.DropDownListFor() 二级联动 ($.getJSON)
    ModelState验证部分属性
    asp.net mvc发送邮件
    SpringBoot的热部署
    SpringBoot 入门demo
    集群、负载均衡、微服务、分布式的概念
    SpringBoot 简介
  • 原文地址:https://www.cnblogs.com/ComputerPlayerJs/p/10511784.html
Copyright © 2011-2022 走看看