• 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 /
avatar image
Question by El ChiNo · Jan 24, 2011 at 08:01 PM · aidistance

how to avoid enemies pushing me when they reach me

Hi everyone. T$$anonymous$$s is my first question so I'm sorry if it's not posted propertly. And I'm sorry for my bad english too.

I have a little test game, where the enemy starts chasing the main character (the player) when he gets in a certain distance. (at the end of the post is the script of the enemy). The t$$anonymous$$ng is that when the enemy reaches the player, he keeps walking forward and pus$$anonymous$$ng the player. It even pushes it upward, so the enemy start walking and pus$$anonymous$$ng the character in the air!

How can I avoid t$$anonymous$$s? I do not have the action decided, but I would like to know how to stop it, no matter what happens later (if the player dies, or just start talking with the enemy).

Thanks everyone.

Here's the script of the enemy (it's based in a few answers I found here):

var LookAtTarget:Transform; var speed : float = 3; var proximity : float = 3;

function Update(){ var dist = Vector3.Distance(LookAtTarget.transform.position, transform.position);

     //check whether you are wit$$anonymous$$n target proximity
 if (dist < proximity ) {
     animation.Play("threaten");
     transform.LookAt (LookAtTarget); //you look at player with t$$anonymous$$s
     transform.Translate (0,0,speed*Time.deltaTime); 

//moves with speed in local z and you are looking toward $$anonymous$$m so you move toward the player //write other codes here } else { animation.Play("idle"); }
}

Comment

People who like this

0 Show 0
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

1 Reply

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by Bravini · Jan 24, 2011 at 08:23 PM

use another variable, maxDistance = 0.3; then change your statement from

if (dist < proximity ) {

to

if (dist < proximity && dist > maxDistance ) {

or optimally make a check just for the translate.

you may also want to check the Hack n Slash tutorial http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial it's a great series of video tutorials, really worth the time.

Comment

People who like this

0 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 El ChiNo · Jan 24, 2011 at 08:54 PM 0
Share

Thanks Bravini, but I need another way, becouse it make the enemy return to the idle position once he gets there, and if the variable maxDistance is not exact, the problem remains the same.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

No one has followed this question yet.

Related Questions

Adding a load level to this script. 1 Answer

Distance before shooting issue. 1 Answer

Enemy AI help with height check 1 Answer

How would I confine an object to the ground? 2 Answers

Efficient way to make enemy stop following player 1 Answer


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