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;
            }
        }
    }
  • 相关阅读:
    iOS 11: CORE ML—浅析
    Android 平台 Native 代码的崩溃捕获机制及实现
    H5直播避坑指南
    Mac系统升级至OS X Mavericks后Genymotion出现的问题及解决方法
    Android 4.4 KitKat终于支持录屏(Screen Recording)了!
    Android开发者资源大汇总
    用AndroidSDK中的Face Detector实现人脸识别
    [Android设计模式]Android退出应用程序终极方法
    ActionBarCompat 教程-实现Action Bar
    使用Roboguice依赖注入规划Android项目
  • 原文地址:https://www.cnblogs.com/ComputerPlayerJs/p/10511784.html
Copyright © 2011-2022 走看看