Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
This question was closed Nov 07, 2015 at 05:04 PM by thorr57 for the following reason:

Altri

avatar image
0
Question by thorr57 · Oct 30, 2015 at 08:29 PM · c#2d2d gamescript.enemy

How to make an enemy 2d chasing player?

I 'm doing a 2d platform game , I need to make enemies but do not know how. the enemy shall patrol and chase the player only when the player enters in the trigger of the enemy. i'd need a script because i am noob in c#. Sorry if I have not written correctly but i'm Italian. Thank you in advance. Please, is pretty urgent!

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Taxen0 · Oct 30, 2015 at 08:43 PM 0
Share

How simple is the platformer, Is it enough if the enemy simply move left/right depending where the player is?

If so you can have a check to see if player position.x is less than enemy position.x and change the direction of the enemy accordingly. This behavior could be activated by a trigger like you said.

You obviously need to handle things like gravity, jumping and the like but I'm guessing you have a system for that?

This is a very simple approach and if you require something more complex feel free to add some more info how your game is working currently when it comes to movement.

2 Replies

  • Sort: 
avatar image
0

Answer by DFT-Games · Oct 30, 2015 at 08:38 PM

Well @thorr57,

what about my video in Italian about this? Sure, is 3D, but the system is identical, you only have to correct the target to ensure the correct plane is used ;)

Cheers

-Pino

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image thorr57 · Oct 31, 2015 at 10:58 AM 0
Share

I have already seen some tutorials from which I got this script

 using UnityEngine;
 using System.Collections;
 using Pathfinding;
 
 [RequireComponent (typeof(Rigidbody2D))]
 [RequireComponent (typeof(Seeker))]
 public class EnemyAI1 : $$anonymous$$onoBehaviour {
     
     public Transform target;
     
     public float UpdateRate =2f;
     
     private Seeker seeker;
     private Rigidbody2D rb;
     
     public Path path;
     
     public float speed = 300f;
     public Force$$anonymous$$ode2D f$$anonymous$$ode;
     
     [HideInInspector]
     public bool pathIsEnded = false;
     
     public float nextWaypointDistance = 3;
     
     private int currentWaypoint = 0;
     
     void Start ()
     {
         seeker = GetComponent <Seeker> ();
         rb = GetComponent <Rigidbody2D> ();
         
         if (target == null)
         {
             Debug.LogError ("No Player found, PANIC!");
             return;
         }
         
 seeker.StartPath (transform.position, target.position, OnPathComplete);
         
         StartCoroutine (UpdatePath ());
     } 
     IEnumerator UpdatePath (){
         if (target == null)
         {
             //TODO: Insert a player search here.
             return false;
         }
 seeker.StartPath (transform.position, target.position, OnPathComplete);
         
         yield return new WaitForSeconds (1f/UpdateRate);
     }
     
     public void OnPathComplete (Path p)
     {
         Debug.Log ("We got a path. Did it have an error?" + p.error);
         
         if (!p.error)
         {
             path = p;
             currentWaypoint = 0;
         }
         
     }
     void FixedUpdate ()
     {
         if (target== null)
         {
             //TODO: Insert a player search here.
             return;
         }
         //TODO: Always look at player?
         
         if (path == null)
             return;
         
         if (currentWaypoint > - path.vectorPath.Count) 
         {
             if (pathIsEnded)
                 return;
             Debug.Log ("End of path reached");
             pathIsEnded = true;
             return;
         }
         pathIsEnded = false;
         
 Vector3 dir = (path.vectorPath [currentWaypoint] -transform.position).normalized;
         dir *= speed * Time.fixedDeltaTime;
         
         rb.AddForce (dir, f$$anonymous$$ode);
         
 float dist = Vector3.Distance (transform.position, path.vectorPath[currentWaypoint]);
         if (dist < nextWaypointDistance) {
             currentWaypoint++;
             return;
         }
     }
 }

but it does not work. the console does not have errors. where is the problem? Please, help!

avatar image
0

Answer by Treyzania · Oct 30, 2015 at 08:41 PM

I would create attach a collider onto the enemy, in the shape of the region, and set it as a trigger. Then use some code like this in a script:

 private bool seenPlayer = false;
 
 void OnTiggerEnter() {
     if  (/* is it the player? */) seenPlayer = true;
 }

 void Update() {
     if (seenPlayer) {
         // do something
     }
 }

Then you would put whatever behavior you would like in place of the " // do something ". Just make sure that the player has a collider on it.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Follow this Question

Answers Answers and Comments

46 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to make an enemy 2d chasing player? 1 Answer

How can I reset the score counter? 0 Answers

How do you make a random 2D shape in Unity? 0 Answers

Why won't my 2D Sprite Move? 1 Answer

Animations not playing correctly for FPS enemy AI 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges